本页内容

QTextBlock Class

QTextBlock 类为QTextDocument 中的文本片段提供了一个容器。更多内容...

头文件: #include <QTextBlock>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

注意:该类中的所有函数均为可重入的。

公共类型

公共函数

QTextBlock(const QTextBlock &other)
QTextBlock::iterator begin() const
QTextBlockFormat blockFormat() const
int blockFormatIndex() const
int blockNumber() const
QTextCharFormat charFormat() const
int charFormatIndex() const
void clearLayout()
bool contains(int position) const
const QTextDocument *document() const
QTextBlock::iterator end() const
int firstLineNumber() const
bool isValid() const
bool isVisible() const
QTextLayout *layout() const
int length() const
int lineCount() const
QTextBlock next() const
int position() const
QTextBlock previous() const
int revision() const
void setLineCount(int count)
void setRevision(int rev)
void setUserData(QTextBlockUserData *data)
void setUserState(int state)
void setVisible(bool visible)
QString text() const
Qt::LayoutDirection textDirection() const
QList<QTextLayout::FormatRange> textFormats() const
QTextList *textList() const
QTextBlockUserData *userData() const
int userState() const
bool operator!=(const QTextBlock &other) const
bool operator<(const QTextBlock &other) const
QTextBlock &operator=(const QTextBlock &other)
bool operator==(const QTextBlock &other) const

详细说明

文本块将QTextDocument 中的文本块或段落封装起来。QTextBlock 提供对 QTextDocuments 中块/段落结构的只读访问。 如果您想为QTextDocument 的视觉呈现实现自己的布局,或者想遍历文档并以自己的自定义格式写出内容,它就非常有用。

文本块由其父文档创建。如果您需要创建新的文本块,或者在检查文档内容时修改其内容,请改用QTextCursor 提供的基于光标的接口。

每个文本块位于document()中的特定position()位置。可通过text()函数获取该块的内容。length()函数用于确定该块在文档中的大小(包括格式化字符)。该块的视觉属性由其文本layout()、charFormat()以及blockFormat()决定。

next() 和previous() 函数允许遍历文档中连续的有效块,前提是在遍历过程中文档未被其他方式修改。请注意,尽管块按顺序返回,但相邻的块可能来自文档结构中的不同位置。可以通过调用isValid() 来确定块的有效性。

QTextBlock 提供了比较运算符,以便更轻松地处理块:operator==() 用于比较两个块是否相等,operator!=() 用于比较两个块是否不相等,operator<() 用于判断一个块是否位于同一文档中另一个块之前。

示意图展示了多个文本块在文本框层次结构中的排列,以及文本块之间的迭代顺序。

另请参阅 QTextBlockFormat 、QTextCharFormat 和QTextFragment 。

成员类型文档

QTextBlock::Iterator

QTextBlock::iterator 的 Qt 风格同义词。

成员函数文档

QTextBlock::QTextBlock(const QTextBlock &other)

将“other ”文本块的属性复制到此文本块。

QTextBlock::iterator QTextBlock::begin() const

返回一个指向文本块开头的文本块迭代器。

另请参阅 end()。

QTextBlockFormat QTextBlock::blockFormat() const

返回描述块特定属性的QTextBlockFormat 。

另请参阅 charFormat()。

int QTextBlock::blockFormatIndex() const

返回该文本块格式在文档内部块格式列表中的索引。

另请参阅 QTextDocument::allFormats()。

int QTextBlock::blockNumber() const

返回该区块的编号;如果区块无效,则返回 -1。

另请参阅 QTextCursor::blockNumber()。

QTextCharFormat QTextBlock::charFormat() const

返回描述该块字符格式的QTextCharFormat 。将文本插入空块时,会使用该块的字符格式。

另请参阅 blockFormat()。

int QTextBlock::charFormatIndex() const

返回文本块字符格式在文档内部字符格式列表中的索引。

另请参阅 QTextDocument::allFormats()。

void QTextBlock::clearLayout()

清除用于布局和显示该块内容的QTextLayout 。

另请参阅 layout()。

bool QTextBlock::contains(int position) const

如果给定的position 位于文本块中,则返回true ;否则返回false 。

const QTextDocument *QTextBlock::document() const

返回该文本块所属的文本文档;如果该文本块不属于任何文档,则返回nullptr 。

QTextBlock::iterator QTextBlock::end() const

返回一个指向文本块末尾的文本块迭代器。

另请参阅 begin()、next() 和previous()。

int QTextBlock::firstLineNumber() const

返回该块的第一行编号;如果该块无效,则返回 -1。除非布局支持此功能,否则行编号与块编号相同。

另请参阅 QTextBlock::blockNumber()。

bool QTextBlock::isValid() const

如果该文本块有效,则返回true ;否则返回false 。

bool QTextBlock::isVisible() const

如果该块可见,则返回true ;否则返回false 。

另请参阅 setVisible()。

QTextLayout *QTextBlock::layout() const

返回用于布局和显示该块内容的QTextLayout 。

请注意,返回的 `QTextLayout ` 对象仅可通过 `QAbstractTextDocumentLayout ` 子类的 `documentChanged` 实现进行修改。从外部进行的任何更改都会导致未定义的行为。

另请参阅 clearLayout()。

int QTextBlock::length() const

返回该块的长度(以字符为单位)。

注意: 返回的长 度包含所有格式字符,例如换行符。

另请参阅 text()、charFormat() 和blockFormat()。

int QTextBlock::lineCount() const

返回行数。并非所有文档布局都支持此功能。

另请参阅 setLineCount()。

QTextBlock QTextBlock::next() const

返回文档中紧接在此文本块之后的文本块;如果这是最后一个文本块,则返回一个空文本块。

请注意,下一个文本块可能位于与该文本块不同的画框或表格中。

另请参阅 previous()、begin() 和end()。

int QTextBlock::position() const

返回该块在文档中的第一个字符的索引。

QTextBlock QTextBlock::previous() const

返回文档中位于该文本块之前的文本块;如果这是第一个文本块,则返回一个空文本块。

请注意,前一个文本块可能位于与该文本块不同的画框或表格中。

另请参阅 next()、begin(),以及end()。

int QTextBlock::revision() const

返回块的修订版本。

另请参阅 setRevision() 和QTextDocument::revision()。

void QTextBlock::setLineCount(int count)

将行数设置为count 。

另请参阅 lineCount()。

void QTextBlock::setRevision(int rev)

将块的修订版本设置为rev 。

另请参阅 revision() 和QTextDocument::revision()。

void QTextBlock::setUserData(QTextBlockUserData *data)

将给定的data 对象附加到文本块上。

QTextBlockUserData 可用于存储自定义设置。所有权将传递给底层文本文档,即如果相应的文本块被删除,则提供的QTextBlockUserData 对象也将被删除。用户数据对象不会存储在撤销历史记录中,因此在撤销文本块的删除操作后,该对象将不可用。

例如,如果您在集成开发环境(IDE)中编写一个编程编辑器,您可能希望让用户为集成调试器在代码中直观地设置断点。在编程编辑器中,一行文本通常对应一个QTextBlock 。QTextBlockUserData 接口允许开发者为每个QTextBlock 存储数据,例如用户在源代码的哪些行设置了断点。 当然,这些信息也可以存储在外部,但如果将其存储在QTextDocument 内部,当用户删除相关代码行时,这些信息也会自动被删除。这实际上只是在QTextDocument 中存储自定义信息的一种方式,而无需在QTextFormat 中使用自定义属性——后者会影响撤销/重做堆栈。

另请参阅 userData()。

void QTextBlock::setUserState(int state)

将指定的state 整数值存储在文本块中。例如,在语法高亮器中,这可用于存储文本解析状态。

另请参阅 userState()。

void QTextBlock::setVisible(bool visible)

将块的可见性设置为visible 。

另请参阅 isVisible()。

QString QTextBlock::text() const

返回该代码块的内容,格式为纯文本。

另请参阅 length()、charFormat() 和blockFormat()。

Qt::LayoutDirection QTextBlock::textDirection() const

返回解析后的文本方向。

如果该块未显式设置方向,则会根据块的内容解析其方向。返回值为Qt::LeftToRight 或Qt::RightToLeft 。

另请参阅 QTextFormat::layoutDirection()、QString::isRightToLeft() 和Qt::LayoutDirection 。

QList<QTextLayout::FormatRange> QTextBlock::textFormats() const

返回该块的文本格式选项,形式为QTextCharFormat 的连续范围列表。在范围边界内插入文本时,将使用该范围的字符格式。

另请参阅 charFormat() 和blockFormat()。

QTextList *QTextBlock::textList() const

如果该块表示一个列表项,则返回该项所属的列表;否则返回nullptr 。

QTextBlockUserData *QTextBlock::userData() const

如果已通过setUserData()或nullptr 设置了QTextBlockUserData 对象,则返回该对象的指针。

另请参阅 setUserData()。

int QTextBlock::userState() const

返回先前通过setUserState()设置的整数值,或返回-1。

另请参阅 setUserState()。

bool QTextBlock::operator!=(const QTextBlock &other) const

如果该文本块与other 文本块不同,则返回true 。

bool QTextBlock::operator<(const QTextBlock &other) const

如果该文本块在文档中位于other 文本块之前,则返回true 。

QTextBlock &QTextBlock::operator=(const QTextBlock &other)

将“other ”文本块分配给此文本块。

bool QTextBlock::operator==(const QTextBlock &other) const

如果该文本块与other 文本块相同,则返回true 。

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