QTextLine类

QTextLine类表示 QTextLayout 内的一条文本行。更多...

头文件 #include <QTextLine>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui

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

公共类型

枚举CursorPosition { CursorBetweenCharacters, CursorOnCharacter }
枚举Edge { Leading, Trailing }

公共函数

QTextLine()
qrealascent() const
qrealcursorToX(int *cursorPos, QTextLine::Edge edge = Leading) const
qrealcursorToX(int cursorPos, QTextLine::Edge edge = Leading) const
qrealdescent() const
voiddraw(QPainter *painter, const QPointF &position) const
(自6.5) QList<QGlyphRun>glyphRuns(int from, int length, QTextLayout::GlyphRunRetrievalFlags retrievalFlags) const
QList<QGlyphRun>glyphRuns(int from = -1, int length = -1) const
qrealheight() const
qrealhorizontalAdvance() const
boolisValid() const
qrealleading() const
boolleadingIncluded() const
intlineNumber() const
QRectFnaturalTextRect() const
qrealnaturalTextWidth() const
QPointFposition() const
QRectFrect() const
voidsetLeadingIncluded(bool included)
voidsetLineWidth(qreal width)
voidsetNumColumns(int numColumns)
voidsetNumColumns(int numColumns, qreal alignmentWidth)
voidsetPosition(const QPointF &pos)
inttextLength() const
inttextStart() const
qrealwidth() const
qrealx() const
intxToCursor(qreal x, QTextLine::CursorPosition cpos = CursorBetweenCharacters) const
qrealy() const

详细描述

文本行通常是通过QTextLayout::createLine()创建的。

创建后,可以使用setLineWidth()setNumColumns()函数来填充行。一行具有多个属性,包括它占据的矩形rect(),其坐标x()y(),文本长度textLength,宽度width和自然文本宽度naturalTextWidth,以及与文本的相对位置ascentdescent。行的光标位置可以通过cursorToX()获取,其反函数可通过xToCursor()获得。可以使用setPosition()移动一行。

成员类型文档

enum QTextLine::CursorPosition

常量
QTextLine::CursorBetweenCharacters0
QTextLine::CursorOnCharacter1

enum QTextLine::Edge

常量
QTextLine::Leading0
QTextLine::Trailing1

成员函数文档

QTextLine::QTextLine()

创建一个无效的行。

qreal QTextLine::ascent() const

返回行的上升。

另请参阅descent()和height

qreal QTextLine::cursorToX(int *cursorPos, QTextLine::Edge edge = Leading) const

将光标位置cursorPos转换为行内的对应x位置,考虑边距edge

如果cursorPos不是有效的光标位置,将使用最近的可用光标位置,并将cursorPos修改为指向此有效光标位置。

另请参阅xToCursor

qreal QTextLine::cursorToX(int cursorPos, QTextLine::Edge edge = Leading) const

这是一个重载函数。

qreal QTextLine::descent() const

返回行的下降。

另请参阅ascent()和height

void QTextLine::draw(QPainter *painter, const QPointF &position) const

在给定的painter和指定的position位置上绘制一行。

[since 6.5] QList<QGlyphRun> QTextLine::glyphRuns(int from, int length, QTextLayout::GlyphRunRetrievalFlags retrievalFlags) const

返回此 QTextLine 中定义为 fromlength 的范围的字符的所有符号的索引和位置。 from 索引相对于包含 QTextLayout 的文本的开头,并且范围必须在 QTextLine 的范围内,如 textStart() 和 textLength() 函数所给出的。

retrievalFlags 用于指定要从布局中检索哪个 QGlyphRun 属性。为了最小化分配和内存消耗,应设置为仅包括您稍后需要访问的属性。

如果 from 为负,则默认为 textStart(),如果 length 为负,则默认为 textLength() 的返回值。

此函数在 Qt 6.5 中引入。

另请参阅 QTextLayout::glyphRuns

QList<QGlyphRun> QTextLine::glyphRuns(int from = -1, int length = -1) const

这是一个重载函数。

返回此 QTextLine 中定义为 fromlength 的范围的字符的所有符号的索引和位置。 from 索引相对于包含 QTextLayout 的文本的开头,并且范围必须在 QTextLine 的范围内,如 textStart() 和 textLength() 函数所给出的。

如果 from 为负,则默认为 textStart(),如果 length 为负,则默认为 textLength() 的返回值。

注意: 这等价于调用 glyphRuns(from, length, QTextLayout::GlyphRunRetrievalFlag::GlyphIndexes | QTextLayout::GlyphRunRetrievalFlag::GlyphPositions)。

另请参阅 QTextLayout::glyphRuns

qreal QTextLine::height() const

返回行的行高。如果不包括行首间距,则等于 ascent() + descent()。如果包含行首间距,则等于 ascent() + descent() + leading()。

另请参阅 ascent(),descent(),leading() 和 setLeadingIncluded

qreal QTextLine::horizontalAdvance() const

返回文本的水平位置。文本的进位是指从其位置到下一个自然绘制文本的位置的距离。

通过将进位加到文本行的位置,并将其用作另一行文本的位置,您将能够在两侧没有间隔的情况下定位这两行。

bool QTextLine::isValid() const

如果此文本行是有效的,则返回 true;否则返回 false

qreal QTextLine::leading() const

返回行的行首间距。

另请参阅 ascent(),descent() 和 height

bool QTextLine::leadingIncluded() const

如果行高中包含了正行首间距,则返回 true;否则返回 false

默认情况下,不包含行首间距。

另请参阅 setLeadingIncluded

int QTextLine::lineNumber() const

返回在文本引擎中行的位置。

QRectF QTextLine::naturalTextRect() const

返回行的覆盖矩形。

qreal QTextLine::naturalTextWidth() const

返回由文本占用的行宽。这始终 <= width(),并且是布局()在没有改变换行位置的情况下可能使用的最小宽度。

QPointF QTextLine::position() const

返回相对于文本布局位置的行位置。

另请参阅setPosition()。

QRectF QTextLine::rect() const

返回行的边界矩形。

另请参阅x(), y(), textLength()和width()。

void QTextLine::setLeadingIncluded(bool included)

如果included为真,则将正行间距包含在行的行高内;否则不包含行间距。

默认情况下,不包含行首间距。

请注意,负行间距将被忽略,必须在代码中使用文本行时处理它,让行重叠。

另请参阅leadingIncluded()。

void QTextLine::setLineWidth(qreal width)

以给定的width布局行。行从其起始位置开始填充,直到填满整行。如果文本在行尾无法分割,则将填充更多的字符到下一个空格或文本的结尾。

void QTextLine::setNumColumns(int numColumns)

布局行。行从其起始位置开始填充,填充了指定的numColumns个字符。如果在numColumns个字符之前文本不能被分割,则行将填充到下一个空格或文本的结尾。

void QTextLine::setNumColumns(int numColumns, qreal alignmentWidth)

布局行。行从其起始位置开始填充,填充指定数量的numColumns个字符。如果在numColumns个字符之前文本不能被分割,则行将填充到下一个空格或文本的结尾。提供的alignmentWidth用作对齐的参考宽度。

void QTextLine::setPosition(const QPointF &pos)

将行移动到位置pos

另请参阅position()。

int QTextLine::textLength() const

返回行中文本的长度。

另请参阅naturalTextWidth()。

int QTextLine::textStart() const

从传入字符串的起始位置返回到QTextLayout的起始行。

qreal QTextLine::width() const

返回由layout()函数指定的行宽。

另请参阅 naturalTextWidth(),x(),y(),textLength()和rect()。

qreal QTextLine::x() const

返回行的X位置。

另请参阅 rect(),y(),textLength()和width()。

int QTextLine::xToCursor(qreal x, QTextLine::CursorPosition cpos = CursorBetweenCharacters) const

将X坐标x转换为最近的匹配光标位置,具体取决于光标位置类型cpos。注意,结果光标位置包括可能的预编辑区域文本。

另请参阅 cursorToX()。

qreal QTextLine::y() const

返回行的Y位置。

另请参阅 x(),rect(),textLength()和width()。

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献的版权属于其各自的拥有者。本提供的文档是根据由自由软件基金会发布的GNU自由文档许可第1.3版的条款许可。Qt及其相关标志是芬兰和/或其他国家的The Qt Company Ltd的商标。所有其他商标均为其各自所有者的财产。