QGraphicsTextItem Class

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

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

公共类型

enum anonymous { 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 代替。

要设置项目的文本,请向 QGraphicsTextItem 的构造函数传递QString ,或调用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图形视图框架

成员类型文档

enum QGraphicsTextItem::anonymous

虚拟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::LinksAccessibleByMouseQt::LinksAccessibleByKeyboard 的链接时,会发出该信号。link 是被点击的链接。

另请参阅 setTextInteractionFlags() 。

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

当用户将鼠标悬停在一个文本项目上的链接上时,就会发出该信号,该链接可启用Qt::LinksAccessibleByMouselink 是被悬停的链接。

另请参阅 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 为真,则Tab 键将导致窗口部件改变焦点;否则,Tab 键将在文档中插入制表符。

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

另请参阅 tabChangesFocus(),ItemIsFocusable, 和textInteractionFlags().

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

设置标志flags ,以指定文本项对用户输入的反应。

QGraphicsTextItem 的默认值是Qt::NoTextInteraction 。该函数还影响 ItemIsFocusableQGraphicsItem 标志,如果flagsQt::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.

© 2025 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.