QTextBoundaryFinder 类
The QTextBoundaryFinder class provides a way of finding Unicode text boundaries in a string. More...
头文件 | #include <QTextBoundaryFinder> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
- 所有成员列表,包括继承的成员
- QTextBoundaryFinder 是 隐式共享类 和 字符串数据处理类 的一部分。
注意:本类中所有函数都是 可重入的。
公共类型
枚举 | BoundaryReason { NotAtBoundary, BreakOpportunity, StartOfItem, EndOfItem, MandatoryBreak, SoftHyphen } |
标志 | BoundaryReasons |
枚举 | BoundaryType { Grapheme, Word, Line, Sentence } |
公共函数
QTextBoundaryFinder() | |
QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, const QString &string) | |
QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, const QChar *chars, qsizetype length, unsigned char *buffer = nullptr, qsizetype bufferSize = 0) | |
(since 6.0) | QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, QStringView string, unsigned char *buffer = nullptr, qsizetype bufferSize = 0) |
QTextBoundaryFinder(const QTextBoundaryFinder &other) | |
~QTextBoundaryFinder() | |
QTextBoundaryFinder::BoundaryReasons | boundaryReasons() const |
bool | isAtBoundary() const |
bool | isValid() const |
qsizetype | position() const |
void | setPosition(qsizetype position) |
QString | string() const |
void | toEnd() |
qsizetype | toNextBoundary() |
qsizetype | toPreviousBoundary() |
void | toStart() |
QTextBoundaryFinder::BoundaryType | type() const |
QTextBoundaryFinder & | operator=(const QTextBoundaryFinder &other) |
详细说明
QTextBoundaryFinder 可以按 Unicode 文本边界规范找到字符串中的 Unicode 文本边界(参见 Unicode 标准附件 #14 和 Unicode 标准附件 #29)。
QTextBoundaryFinder可以在四个可能的模式中操作QString,这取决于BoundaryType的值。
用户认为的字符或语言的基本单位是由Unicode字符组成的Unicode字符单元,这里称其为Grapheme clusters。例如,两个Unicode字符'a'加重音符号被视为一个grapheme cluster,因为用户将其视为一个字符,但在这种情况下,它们由两个Unicode代码点表示(见https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)。
单词边界用于定位语言认为是单词的开始和结束位置(见https://www.unicode.org/reports/tr29/#Word_Boundaries)。
换行边界给出可能发生换行的地方,句子边界将显示整个句子的开始和结束(见https://www.unicode.org/reports/tr29/#Sentence_Boundaries和https://www.unicode.org/reports/tr14/)。
字符串开头位置始终是一个有效边界,它指的是第一个字符之前的位置。字符串长度处的最后一个位置也是有效的,它指的是最后一个字符之后的位置。
成员类型文档
enum QTextBoundaryFinder::BoundaryReason
flags QTextBoundaryFinder::BoundaryReasons
常量 | 值 | 描述 |
---|---|---|
QTextBoundaryFinder::NotAtBoundary | 0 | 边界查找器不在边界位置。 |
QTextBoundaryFinder::BreakOpportunity | 0x1f | 边界查找器在换行机会位置。这种换行机会可能也是一个项目边界(无论是StartOfItem、EndOfItem还是两者组合),强制换行或软连字符。 |
QTextBoundaryFinder::StartOfItem (自Qt 5.0起) | 0x20 | 边界查找器在grapheme、单词、句子或行的开始。 |
QTextBoundaryFinder::EndOfItem (自Qt 5.0起) | 0x40 | 边界查找器在grapheme、单词、句子或行的结束。 |
QTextBoundaryFinder::MandatoryBreak (自Qt 5.0起) | 0x80 | 边界查找器在行的末尾(仅针对Line边界类型)。 |
QTextBoundaryFinder::SoftHyphen | 0x100 | 边界查找器在软连字符(仅针对Line边界类型)。 |
BoundaryReasons类型是QFlags<BoundaryReason>的typedef。它存储了BoundaryReason值的OR组合。
enum QTextBoundaryFinder::BoundaryType
常量 | 值 | 描述 |
---|---|---|
QTextBoundaryFinder::Grapheme | 0 | 查找最小的边界——grapheme,包括字母、标点符号、数字等。 |
QTextBoundaryFinder::Word | 1 | 查找单词。 |
QTextBoundaryFinder::Line | 3 | 查找将文本分成多行的可能位置。 |
QTextBoundaryFinder::Sentence | 2 | 查找句子边界。这些包括句号、问号等。 |
成员函数文档
QTextBoundaryFinder::QTextBoundaryFinder()
构造一个无效的QTextBoundaryFinder对象。
QTextBoundaryFinder::QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, const QString &string)
创建一个类型为type并操作于string的QTextBoundaryFinder对象。
QTextBoundaryFinder::QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, const QChar *chars, qsizetype length, unsigned char *buffer = nullptr, qsizetype bufferSize = 0)
这是一个重载函数。
与 QTextBoundaryFinder(type, QStringView(chars, length), buffer, bufferSize) 相同。
[自 6.0 开始]
QTextBoundaryFinder::QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, QStringView string, unsigned char *buffer = nullptr, qsizetype bufferSize = 0)
创建一个类型为type并操作于string的QTextBoundaryFinder对象。
buffer 是一个可选的工作缓冲区,大小为 bufferSize,您可以将其传递给 QTextBoundaryFinder。如果缓冲区足够大以容纳所需的工作数据(bufferSize >= length + 1),它将使用此缓冲区而不是分配自己的缓冲区。
警告:QTextBoundaryFinder 不创建 string 的副本。确保数组在 QTextBoundaryFinder 对象存在期间分配的职责在于应用程序程序员。对于 buffer 也适用。
此函数是在 Qt 6.0 中引入的。
QTextBoundaryFinder::QTextBoundaryFinder(const QTextBoundaryFinder &other)
复制 QTextBoundaryFinder 对象 other。
[noexcept]
QTextBoundaryFinder::~QTextBoundaryFinder()
销毁 QTextBoundaryFinder 对象。
QTextBoundaryFinder::BoundaryReasons QTextBoundaryFinder::boundaryReasons() const
返回边界查找器选择当前位置作为边界的理由。
bool QTextBoundaryFinder::isAtBoundary() const
如果对象的 position() 当前位于有效的文本边界,则返回 true
。
bool QTextBoundaryFinder::isValid() const
如果文本边界查找器有效,则返回 true
;否则返回 false
。默认的 QTextBoundaryFinder 无效。
qsizetype QTextBoundaryFinder::position() const
返回 QTextBoundaryFinder 的当前位置。
范围是从 0(字符串的开始)到字符串长度的 inclusive。
另请参阅setPosition()。
void QTextBoundaryFinder::setPosition(qsizetype position)
将 QTextBoundaryFinder 的当前位置设置为 position。
如果 position 超出范围,它将被绑定到仅有效的位置。在这种情况下,有效位置是从 0 到字符串长度的 inclusive。
另请参阅position()。
QString QTextBoundaryFinder::string() const
返回 QTextBoundaryFinder 对象操作的字符串。
void QTextBoundaryFinder::toEnd()
将查找器移动到字符串的末尾。这相当于调用 setPosition(string.length())。
另请参阅 setPosition() 和 position()。
qsizetype QTextBoundaryFinder::toNextBoundary()
将 QTextBoundaryFinder 移动到下一个边界位置并返回该位置。
如果没有下一个边界,则返回 -1。
qsizetype QTextBoundaryFinder::toPreviousBoundary()
将 QTextBoundaryFinder 移动到上一个边界位置并返回该位置。
如果没有上一个边界,则返回 -1。
void QTextBoundaryFinder::toStart()
将查找器移动到字符串的开始。这相当于调用 setPosition(0)。
另请参阅 setPosition() 和 position()。
QTextBoundaryFinder::BoundaryType QTextBoundaryFinder::type() const
返回 QTextBoundaryFinder 的类型。
QTextBoundaryFinder &QTextBoundaryFinder::operator=(const QTextBoundaryFinder &other)
将对象 other 赋值给另一个 QTextBoundaryFinder 对象。
© 2024 The Qt Company Ltd. 本文档中的文档贡献为其各自所有者的版权。本文档提供的内容受 GNU 自由文档许可协议第 1.3 版 条款许可,由自由软件基金会发布。Qt 及相关徽标是芬兰的 The Qt Company Ltd. 以及/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。