本页内容

QGraphicsTextItem Class

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

标题: #include <QGraphicsTextItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QGraphicsObject

公共类型

enum { Type }

属性

公共函数

QGraphicsTextItem(QGraphicsItem *parent = nullptr)
QGraphicsTextItem(const QString &text, QGraphicsItem *parent = nullptr)
virtual ~QGraphicsTextItem()
void adjustSize()
QColor defaultTextColor() const
QTextDocument *document() const
QFont font() const
bool openExternalLinks() const
void setDefaultTextColor(const QColor &col)
void setDocument(QTextDocument *document)
void setFont(const QFont &font)
void setHtml(const QString &text)
void setOpenExternalLinks(bool open)
void setPlainText(const QString &text)
void setTabChangesFocus(bool b)
void setTextCursor(const QTextCursor &cursor)
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
void setTextWidth(qreal width)
bool tabChangesFocus() const
QTextCursor textCursor() const
Qt::TextInteractionFlags textInteractionFlags() const
qreal textWidth() const
QString toHtml() const
QString toPlainText() const

重新实现的公共函数

virtual QRectF boundingRect() const override
virtual bool contains(const QPointF &point) const override
virtual bool isObscuredBy(const QGraphicsItem *item) const override
virtual QPainterPath opaqueArea() const override
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
virtual QPainterPath shape() const override
virtual int type() const override

信号

void linkActivated(const QString &link)
void linkHovered(const QString &link)

重新实现的受保护函数

virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event) override
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event) override
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event) override
virtual void dropEvent(QGraphicsSceneDragDropEvent *event) override
virtual void focusInEvent(QFocusEvent *event) override
virtual void focusOutEvent(QFocusEvent *event) override
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event) override
virtual void inputMethodEvent(QInputMethodEvent *event) override
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
virtual void keyPressEvent(QKeyEvent *event) override
virtual void keyReleaseEvent(QKeyEvent *event) override
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
virtual bool sceneEvent(QEvent *event) override

详细说明

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

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

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

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

可以通过setTextWidth() 设置项的首选文本宽度,并通过textWidth() 获取该值。

注意:若 要将 HTML 文本居中对齐,必须设置该项的文本宽度。否则,可以在设置项的文本后调用 `adjustSize()`。

靠近原点绘制的直线段

注意:QGraphicsTextItem 默认支持 `hover events `。您可以通过 `setAcceptHoverEvents()` 更改此设置。

另请参阅 QGraphicsSimpleTextItem 、QGraphicsPathItem 、QGraphicsRectItem 、QGraphicsEllipseItem 、QGraphicsPixmapItem 、QGraphicsPolygonItem 、QGraphicsLineItem 以及Graphics View Framework。

成员类型文档

[anonymous] enum

虚拟函数type() 返回的值。

常量值描述
QGraphicsTextItem::Type8一个图形文本项

属性文档

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

默认值为 false。

访问函数:

bool openExternalLinks() const
void setOpenExternalLinks(bool open)

textCursor : QTextCursor

该属性表示可编辑文本项中的可见文本光标。

默认情况下,如果该项的文本尚未设置,则该属性包含一个空文本光标;否则,它包含一个位于该项文档开头的文本光标。

访问函数:

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

成员函数文档

[explicit] QGraphicsTextItem::QGraphicsTextItem(QGraphicsItem *parent = nullptr)

创建一个 QGraphicsTextItem。parent 将作为参数传递给QGraphicsItem 的构造函数。

另请参阅 QGraphicsScene::addItem()。

[explicit] QGraphicsTextItem::QGraphicsTextItem(const QString &text, QGraphicsItem *parent = nullptr)

创建一个 QGraphicsTextItem,并使用text 作为默认的纯文本。parent 将作为参数传递给QGraphicsItem 的构造函数。

另请参阅 QGraphicsScene::addItem()。

[virtual noexcept] QGraphicsTextItem::~QGraphicsTextItem()

销毁QGraphicsTextItem 。

void QGraphicsTextItem::adjustSize()

将文本项调整为合理大小。

[override virtual] QRectF QGraphicsTextItem::boundingRect() const

重新实现了:QGraphicsItem::boundingRect() const。

[override virtual] bool QGraphicsTextItem::contains(const QPointF &point) const

重写:QGraphicsItem::contains(const QPointF &point) const。

[override virtual protected] void QGraphicsTextItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)

重写了:QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)。

QColor QGraphicsTextItem::defaultTextColor() const

返回用于未格式化文本的默认文本颜色。

另请参阅 ` setDefaultTextColor()`。

QTextDocument *QGraphicsTextItem::document() const

返回该项目的文本文档。

另请参阅 setDocument()。

[override virtual protected] void QGraphicsTextItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)

重写了:QGraphicsItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)。

[override virtual protected] void QGraphicsTextItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)

重写了:QGraphicsItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)。

[override virtual protected] void QGraphicsTextItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)

重写了:QGraphicsItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)。

[override virtual protected] void QGraphicsTextItem::dropEvent(QGraphicsSceneDragDropEvent *event)

重写:QGraphicsItem::dropEvent(QGraphicsSceneDragDropEvent *event)。

[override virtual protected] void QGraphicsTextItem::focusInEvent(QFocusEvent *event)

重写了:QGraphicsItem::focusInEvent(QFocusEvent *event)。

[override virtual protected] void QGraphicsTextItem::focusOutEvent(QFocusEvent *event)

重写了:QGraphicsItem::focusOutEvent(QFocusEvent *event)。

QFont QGraphicsTextItem::font() const

返回该项的字体,该字体用于渲染文本。

另请参阅 setFont()。

[override virtual protected] void QGraphicsTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)

重写了:QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)。

[override virtual protected] void QGraphicsTextItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)

重写了:QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)。

[override virtual protected] void QGraphicsTextItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)

重写了:QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)。

[override virtual protected] void QGraphicsTextItem::inputMethodEvent(QInputMethodEvent *event)

重写了:QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)。

[override virtual protected] QVariant QGraphicsTextItem::inputMethodQuery(Qt::InputMethodQuery query) const

重写了:QGraphicsItem::inputMethodQuery (Qt::InputMethodQuery query)const。

[override virtual] bool QGraphicsTextItem::isObscuredBy(const QGraphicsItem *item) const

重写了:QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const。

[override virtual protected] void QGraphicsTextItem::keyPressEvent(QKeyEvent *event)

重写了:QGraphicsItem::keyPressEvent(QKeyEvent *event)。

[override virtual protected] void QGraphicsTextItem::keyReleaseEvent(QKeyEvent *event)

重写了:QGraphicsItem::keyReleaseEvent(QKeyEvent *event)。

[signal] void QGraphicsTextItem::linkActivated(const QString &link)

当用户点击文本项上的链接,且该链接会触发Qt::LinksAccessibleByMouse 或Qt::LinksAccessibleByKeyboard 时,会发出此信号。link 即为被点击的链接。

另请参阅 setTextInteractionFlags()。

[signal] void QGraphicsTextItem::linkHovered(const QString &link)

当用户将鼠标悬停在启用了Qt::LinksAccessibleByMouse 的文本项上的链接时,会发出此信号。link 即为被悬停的链接。

另请参阅 setTextInteractionFlags()。

[override virtual protected] void QGraphicsTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)

重写了:QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)。

[override virtual protected] void QGraphicsTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)

重写了:QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)。

[override virtual protected] void QGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)

重写了:QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)。

[override virtual protected] void QGraphicsTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)

重写:QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)。

[override virtual] QPainterPath QGraphicsTextItem::opaqueArea() const

重新实现了:QGraphicsItem::opaqueArea() const。

[override virtual] void QGraphicsTextItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)

重写了:QGraphicsItem::paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)。

[override virtual protected] bool QGraphicsTextItem::sceneEvent(QEvent *event)

重写了:QGraphicsItem::sceneEvent(QEvent *event)。

void QGraphicsTextItem::setDefaultTextColor(const QColor &col)

将未格式化文本的颜色设置为col 。

另请参阅 defaultTextColor()。

void QGraphicsTextItem::setDocument(QTextDocument *document)

将文本文档document 设置到该项目上。

另请参阅 document()。

void QGraphicsTextItem::setFont(const QFont &font)

将用于渲染文本项的字体设置为font 。

另请参阅 font()。

void QGraphicsTextItem::setHtml(const QString &text)

将该项的文本设置为text ,假设该文本采用 HTML 格式。如果该项拥有键盘输入焦点,此函数还将调用ensureVisible(),以确保该文本在所有视口中均可见。

另请参阅 toHtml()、hasFocus() 和QGraphicsSimpleTextItem 。

void QGraphicsTextItem::setPlainText(const QString &text)

将项的文本设置为text 。如果该项具有键盘输入焦点,此函数还会调用ensureVisible(),以确保该文本在所有视口中均可见。

另请参阅 toHtml() 和hasFocus()。

void QGraphicsTextItem::setTabChangesFocus(bool b)

如果 `b ` 为 `true`,则 `Tab ` 键将导致控件获得焦点;否则,Tab 键将在文档中插入一个制表符。

在某些情况下,文本编辑器不应允许用户输入制表符或使用Tab 键更改缩进,因为这会破坏焦点链。默认值为 false。

另请参阅 tabChangesFocus()、ItemIsFocusable 以及textInteractionFlags()。

void QGraphicsTextItem::setTextInteractionFlags(Qt::TextInteractionFlags flags)

设置标志flags ,以指定文本项应如何响应用户输入。

QGraphicsTextItem 的默认值为Qt::NoTextInteraction 。此函数还会影响 ItemIsFocusableQGraphicsItem 标志:若flags 与Qt::NoTextInteraction 不相等,则设置该标志;否则将其清除。

默认情况下,文本为只读状态。要将该项目转换为编辑器,请设置Qt::TextEditable 标志。

另请参阅 textInteractionFlags()。

void QGraphicsTextItem::setTextWidth(qreal width)

设置项目文本的首选宽度。如果实际文本宽度超过指定宽度,则会换行显示。

如果将`width `设置为-1,则文本不会换行,除非通过显式的换行符或新段落强制换行。

默认值为 -1。

请注意,QGraphicsTextItem 内部保存了一个 `QTextDocument ` 对象,该对象用于计算文本宽度。

另请参阅 textWidth() 和QTextDocument::setTextWidth()。

[override virtual] QPainterPath QGraphicsTextItem::shape() const

重新实现了:QGraphicsItem::shape() const。

bool QGraphicsTextItem::tabChangesFocus() const

如果Tab 键会导致控件失去焦点,则返回true ;否则返回false。

默认情况下,此行为被禁用,该函数将返回 false。

另请参阅 setTabChangesFocus()。

Qt::TextInteractionFlags QGraphicsTextItem::textInteractionFlags() const

返回当前的文本交互标志。

另请参阅 setTextInteractionFlags()。

qreal QGraphicsTextItem::textWidth() const

返回文本宽度。

该宽度是通过QGraphicsTextItem 内部维护的QTextDocument 计算得出的。

另请参阅 setTextWidth() 和QTextDocument::textWidth()。

QString QGraphicsTextItem::toHtml() const

返回该项转换为 HTML 格式的文本;如果未设置文本,则返回一个空的 `QString `。

另请参阅 setHtml()。

QString QGraphicsTextItem::toPlainText() const

返回该项转换为纯文本后的文本内容;如果未设置文本,则返回空QString 。

另请参阅 setPlainText()。

[override virtual] int QGraphicsTextItem::type() const

重新实现了:QGraphicsItem::type() const。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.