class QStaticText#

当文本及其布局更新频率较低时,QStaticText 类可以优化文本的绘制。更多

概要#

方法#

注意

本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们随时欢迎对片段翻译的贡献。如果您发现翻译有问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告知我们

详细描述#

QStaticText 类提供了一种缓存文本块布局数据的方法,从而使绘制效率高于使用 drawText(),其中布局信息在每次调用时都会重新计算。

此类主要在对文本、其字体以及画笔的转换在多个绘制事件中保持静态的情况下进行优化。如果文本或其布局在每次迭代中都会更改,则 drawText() 是更高效的替代方案,因为静态文本的布局需要重新计算以考虑新状态。

转换画笔不会导致文本布局重新计算,但会对 drawStaticText() 产生非常小的性能影响。更改画笔转换的任何其他部分或画笔的字体将导致静态文本布局重新计算。应尽可能避免这些更改,以最大化使用 QStaticText 的性能优势。

此外,drawStaticText() 只支持仿射变换。在投影画笔上调用 drawStaticText() 的性能略低于常规的 drawText() 调用,因此应避免这样做。

class MyWidget: public QWidget
{
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent), m_staticText("This is static text")

protected:
    void paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
        painter.drawStaticText(0, 0, m_staticText);
    }

private:
    QStaticText m_staticText;
};

QStaticText 类可以用来模拟 drawText() 在没有边界的情况下的行为,并且当使用边界矩形调用 drawText() 时。

如果不需要边界矩形,可以创建一个未设置首选文本宽度的 QStaticText 对象。然后文本将占用单行。

如果在QStaticText对象上设置文本宽度,这将限制文本。文本将被格式化,以确保没有一行超过指定的宽度。为QStaticText设置的文本宽度不会自动用于裁剪。要实现裁剪并附加换行,请使用setClipRect() 。文本的位置由传递给drawStaticText()的参数确定,并且每次调用都可能有所改变,但对性能的影响很小。

为了额外的方便,您可以使用QTextDocument支持的HTML子集对文本应用格式。}QStaticText将尝试使用mightBeRichText()猜测输入文本的格式,如果此函数返回true,则将其解释为富文本。要强制QStaticText将内容显示为纯文本或富文本,请使用函数setTextFormat(),分别传递Qt::PlainText和Qt::RichText。

QStaticText只能表示文本,因此只有改变文本布局或外观的HTML标签会受到尊重。例如,将图像添加到输入HTML中,会导致图像作为布局的一部分嵌入,影响文本符号的位置,但不会显示出来。输出将是空区域,大小与图像相同。同样,使用表格将导致文本以表格格式排列,但不会绘制边框。

如果这是第一次绘制静态文本,或者自上次绘制以来静态文本或画笔的字体已更改,则必须重新计算文本的布局。在某些绘图引擎中,更改画笔的矩阵也将导致重新计算布局。特别是,对于OpenGL2绘图引擎以外的任何引擎都会发生这种情况。重新计算布局将在drawStaticText()调用的位置产生额外的开销。为了避免在绘图事件中产生这种开销,您可以在事先调用prepare(),以确保已计算布局。

另请参阅

代码 drawText()drawStaticText()以及在QTextLayoutQTextDocument 中的使用。

PerformanceHint#

此枚举可用于在 QStaticText 上设置不同的性能提示。这些提示可以用来说明 QStaticText 应尽可能使用额外的缓存来提高性能,但可能会以内存消耗为代价。特别是,在 QStaticText 上设置 AggressiveCaching 性能提示将提高在 OpenGL 图形系统或绘制到 QOpenGLWidget 时的性能。

常量

描述

QStaticText.ModerateCaching

进行基本的缓存以提高性能,同时保持内存成本较低。

QStaticText AggressiveCaching

当可用时使用额外的缓存。这可能会以更高的内存成本提高性能。

__init__(other)#
参数:

otherQStaticText

构建一个 QStaticText 对象,它是 other 的副本。

__init__(text)
参数:

text – str

使用给定的 text 构建一个 QStaticText 对象。

__init__()

构建一个空的 QStaticText

__ne__(arg__1)#
参数:

arg__1QStaticText

返回类型:

bool

比较 other 和此 QStaticText 。如果文本、字体或最大尺寸不同,则返回 true

__eq__(arg__1)#
参数:

arg__1QStaticText

返回类型:

bool

比较 other 与此 QStaticText 。如果文本、字体和文本宽度相等,则返回 true

performanceHint()#
返回类型:

性能提示

返回针对 QStaticText 设置的性能提示。

另请参阅

setPerformanceHint()

prepare([matrix=QTransform()[, font=QFont()]])#
参数:

使用给定的 matrixfont 准备 QStaticText 对象以进行绘制,以避免在调用 drawStaticText() 时造成开销。

当调用 drawStaticText() 时,如果 QStaticText 对象的任何部分自上次绘制以来已发生变化,则将重新计算布局。如果绘图器字体与上次绘制 QStaticText 时不同,或者,在非 OpenGL2 引擎的任何其他绘图引擎上,如果绘图器的矩阵自静态文本上次绘制以来已更改,则也会重新计算。

为了在第一次绘制后将 QStaticText 后避免创建布局的开销,您可以使用 prepare() 函数并传递在绘制文本时预期的 matrixfont

setPerformanceHint(performanceHint)#
参数:

performanceHintPerformanceHint

根据提供的 performanceHint 设置 QStaticText 的性能提示。 performanceHint 用于定制内部缓存的程度,以改善性能。

默认值为 ModerateCaching .

注意

此函数将导致文本布局需要重新计算。

另请参阅

performanceHint()

setText(text)#
参数:

text – str

QStaticText 的文本设置为 text

注意

此函数将导致文本布局需要重新计算。

另请参阅

text()

setTextFormat(textFormat)#
参数:

textFormatTextFormat

QStaticText 的文本格式设置为 textFormat。如果将 textFormat 设置为 Qt::AutoText(默认值),文本格式将尝试使用函数 mightBeRichText() 确定格式。如果文本格式为 Qt::PlainText,则文本将以纯文本显示,而如果格式为 Qt::RichText,则被视为 HTML。支持由 QStaticText 解释的 HTML 标签,修改文本的字体、颜色或布局。

注意

此函数将导致文本布局需要重新计算。

setTextOption(textOption)#
参数:

textOptionQTextOption

将控制布局过程的文本选项结构设置为给定的 textOption

另请参阅

textOption()

setTextWidth(textWidth)#
参数:

textWidth – float

为此 QStaticText 设置首选宽度。如果文本宽度超过指定值,则会拆分为多行并垂直增长。如果文本不能拆分为多行,则比指定的 textWidth 更大。

将首选文本宽度设置为负数将导致文本无界限。

使用 size() 获取文本的实际大小。

注意

此函数将导致文本布局需要重新计算。

另请参阅

textWidth() size()

size()#
返回类型:

QSizeF

返回此 QStaticText 的边界矩形的大小。

另请参阅

textWidth()

swap(other)#
参数:

otherQStaticText

将此静态文本实例与 other 交换。此函数非常快速且绝对不会失败。

text()#
返回类型:

str

返回 QStaticText 的文本。

另请参阅

setText()

textFormat()#
返回类型:

TextFormat

返回 QStaticText 的文本格式。

textOption()#
返回类型:

QTextOption

返回当前用于控制布局过程的文本选项。

另请参阅

setTextOption()

textWidth()#
返回类型:

float

返回此 QStaticText 的首选宽度。

另请参阅

setTextWidth()