图形视图(16):【类】QGraphicsTextItem [官翻]

QGraphicsTextItem 类

QGraphicsTextItem类提供了一个文本项,您可以将其添加到QGraphicsScene中以显示格式化的文本。

Header:#include < QGraphicsTextItem >
qmake:QT += widgets
Inherits:QGraphicsObject
Inherited By:
Since:Qt 4.2

详述

如果只需要在项目中显示纯文本,请考虑改用QGraphicsSimpleTextItem。

要设置项目的文本,请将QString传递给QGraphicsTextItem的构造函数,或调用setHtml() / setPlainText() 。

QGraphicsTextItem使用文本的格式化大小和关联的字体来提供boundingRect() ,shape() 和contains() 的合理实现。 您可以通过调用setFont() 来设置字体。

通过使用setTextInteractionFlags() 设置Qt::TextEditorInteraction标志,可以使该项目可编辑。

可以使用setTextWidth() 设置项目的首选文本宽度,并使用textWidth() 获得该宽度。

注意:为了使HTML文本居中对齐,必须设置项目的文本宽度。 否则,可以在设置项目的文本后调用adjustSize() 。

img

注意:默认情况下,QGraphicsTextItem接受悬停事件。 您可以使用setAcceptHoverEvents() 更改此设置。

另请参见QGraphicsSimpleTextItem,QGraphicsPathItem,QGraphicsRectItem,QGraphicsEllipseItem,QGraphicsPixmapItem,QGraphicsPolygonItem,QGraphicsLineItem和Graphics View Framework。

公共类型

enum anonymous

由virtual type()函数返回的值。

ConstantValueDescription
QGraphicsTextItem::Type8图形文本项

属性

openExternalLinks : bool

指定QGraphicsTextItem是否应该使用QDesktopServices::openUrl() 自动打开链接,而不是发出linkActivated信号。
默认值为false。

Access functions:

  • bool openExternalLinks() const
  • void setOpenExternalLinks(bool open)

textCursor : QTextCursor

此属性表示可编辑文本项中的可见文本光标。
默认情况下,如果尚未设置项目的文本,则此属性包含一个空文本光标; 否则,它包含一个放在项目文档开头的文本光标。

Access functions:

  • QTextCursor textCursor() const
  • void setTextCursor(const QTextCursor &cursor)

公共函数

构造函数

  1. QGraphicsTextItem(const QString &text, QGraphicsItem *parent = nullptr)
  • QGraphicsTextItem(QGraphicsItem *parent = nullptr)
  • virtual ~QGraphicsTextItem()

属性相关

  1. bool openExternalLinks() const
    void setOpenExternalLinks(bool open)
  2. QTextCursor textCursor() const
    void setTextCursor(const QTextCursor &cursor)

其它函数

  • void adjustSize()
  • QColor defaultTextColor() const
    void setDefaultTextColor(const QColor &col)
  • qreal textWidth() const
    void setTextWidth(qreal width)
  • QFont font() const
    void setFont(const QFont &font)
  • QString toHtml() const
    void setHtml(const QString &text)
  • QString toPlainText() const
    void setPlainText(const QString &text)
  • QTextDocument * document() const
    void setDocument(QTextDocument *document)

交互

  • bool tabChangesFocus() const
    void setTabChangesFocus(bool b)
  • Qt::TextInteractionFlags textInteractionFlags() const
    void setTextInteractionFlags(Qt::TextInteractionFlags flags) 设置flags标志以指定文本项应如何响应用户输入
    QGraphicsTextItem的默认值为Qt::NoTextInteraction。 如果标志与Qt::NoTextInteraction不同,则通过设置它来影响ItemIsFocusable QGraphicsItem标志,否则将其清除。
    默认情况下,文本为只读。 要将项目转换为编辑器,请设置Qt::TextEditable标志。

enum Qt::TextInteractionFlag
flags Qt::TextInteractionFlags

该枚举指定文本显示窗口小部件如何响应用户输入。

ConstantValueDescription
NoTextInteraction0无法与文字互动。
TextSelectableByMouse1可以使用鼠标选择文本,然后使用上下文菜单或标准键盘快捷键将其复制到剪贴板。
TextSelectableByKeyboard2可以使用键盘上的光标键选择文本。 显示一个文本光标。
LinksAccessibleByMouse4链接可以用鼠标突出显示并激活。
LinksAccessibleByKeyboard8可以使用Tab突出显示链接,然后按Enter激活。
TextEditable16文本是完全可编辑的。
TextEditorInteractionTextSelectableByMouse | TextSelectableByKeyboard | TextEditable文本编辑器的默认值。
TextBrowserInteractionTextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboardQTextBrowser的默认值。

重写的公共函数

  1. virtual QRectF boundingRect() const override
  2. virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override
  3. virtual int type() const override enum { Type = 13 };

演示代码

#include <QtWidgets>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setApplicationName ("图形框架");
    QGraphicsView view;
    int x = -200,y = -200;
    int w = 400,h=400;
    QGraphicsScene scene(x,y,w,h);
    scene.setBackgroundBrush (QBrush(qRgb (173,241,174)));

    auto  *gi = new QGraphicsTextItem;
    gi->setFlag (QGraphicsItem::ItemIsMovable);

    QFont font = qApp->font ();
    font.setFamily ("Arial");
    font.setPixelSize (20);

    gi->setHtml ("<table border='1'>"
                 "    <tr>"
                 "        <td>row 1, cell 1</td>"
                 "        <td>row 1, cell 2</td>"
                 "    </tr>"
                 "    <tr>"
                 "        <td>row 2, cell 1</td>"
                 "        <td>row 2, cell 2</td>"
                 "    </tr>"
                 "</table>");
    gi->setFont (font);
    gi->setTextInteractionFlags (Qt::TextEditorInteraction);
    gi->moveBy (x,y);

    scene.addItem (gi);

    view.setScene (&scene);
    view.setRenderHint (QPainter::Antialiasing);
    view.setWindowFlag (Qt::WindowMinMaxButtonsHint,false);
    view.show ();
    return a.exec();
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值