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 XML 风格同义词。

成员函数文档

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

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

另请参阅 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

例如,如果您在集成开发环境中编写了编程编辑器,您可能希望让用户在代码中直观地设置断点,以便集成调试器。在编程编辑器中,一行文本通常对应一个QTextBlockQTextBlockUserData 界面允许开发人员存储每个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::LeftToRightQt::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

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