- class QStaticText#
当文本及其布局更新频率较低时,
QStaticText
类可以优化文本的绘制。更多…概要#
方法#
def
__init__()
def
__ne__()
def
__eq__()
def
prepare()
def
setText()
def
setTextFormat()
def
setTextOption()
def
setTextWidth()
def
size()
def
swap()
def
text()
定义
textFormat()
定义
textOption()
定义
textWidth()
注意
本文档可能包含从 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()
以及在QTextLayout
和QTextDocument
中的使用。- 类 PerformanceHint#
此枚举可用于在
QStaticText
上设置不同的性能提示。这些提示可以用来说明QStaticText
应尽可能使用额外的缓存来提高性能,但可能会以内存消耗为代价。特别是,在QStaticText
上设置 AggressiveCaching 性能提示将提高在 OpenGL 图形系统或绘制到 QOpenGLWidget 时的性能。常量
描述
QStaticText.ModerateCaching
进行基本的缓存以提高性能,同时保持内存成本较低。
QStaticText AggressiveCaching
当可用时使用额外的缓存。这可能会以更高的内存成本提高性能。
- __init__(other)#
- 参数:
other –
QStaticText
构建一个
QStaticText
对象,它是other
的副本。- __init__(text)
- 参数:
text – str
使用给定的
text
构建一个QStaticText
对象。- __init__()
构建一个空的
QStaticText
- __ne__(arg__1)#
- 参数:
arg__1 –
QStaticText
- 返回类型:
bool
比较
other
和此QStaticText
。如果文本、字体或最大尺寸不同,则返回true
。- __eq__(arg__1)#
- 参数:
arg__1 –
QStaticText
- 返回类型:
bool
比较
other
与此QStaticText
。如果文本、字体和文本宽度相等,则返回true
。返回针对
QStaticText
设置的性能提示。另请参阅
- prepare([matrix=QTransform()[, font=QFont()]])#
- 参数:
matrix –
QTransform
font –
QFont
使用给定的
matrix
和font
准备QStaticText
对象以进行绘制,以避免在调用 drawStaticText() 时造成开销。当调用 drawStaticText() 时,如果
QStaticText
对象的任何部分自上次绘制以来已发生变化,则将重新计算布局。如果绘图器字体与上次绘制QStaticText
时不同,或者,在非 OpenGL2 引擎的任何其他绘图引擎上,如果绘图器的矩阵自静态文本上次绘制以来已更改,则也会重新计算。为了在第一次绘制后将
QStaticText
后避免创建布局的开销,您可以使用 prepare() 函数并传递在绘制文本时预期的matrix
和font
。- setPerformanceHint(performanceHint)#
- 参数:
performanceHint –
PerformanceHint
根据提供的
performanceHint
设置QStaticText
的性能提示。performanceHint
用于定制内部缓存的程度,以改善性能。默认值为
ModerateCaching
.- setText(text)#
- 参数:
text – str
将
QStaticText
的文本设置为text
。- setTextFormat(textFormat)#
- 参数:
textFormat –
TextFormat
将
QStaticText
的文本格式设置为textFormat
。如果将textFormat
设置为 Qt::AutoText(默认值),文本格式将尝试使用函数mightBeRichText()
确定格式。如果文本格式为 Qt::PlainText,则文本将以纯文本显示,而如果格式为 Qt::RichText,则被视为 HTML。支持由QStaticText
解释的 HTML 标签,修改文本的字体、颜色或布局。- setTextOption(textOption)#
- 参数:
textOption –
QTextOption
将控制布局过程的文本选项结构设置为给定的
textOption
。另请参阅
- setTextWidth(textWidth)#
- 参数:
textWidth – float
为此
QStaticText
设置首选宽度。如果文本宽度超过指定值,则会拆分为多行并垂直增长。如果文本不能拆分为多行,则比指定的textWidth
更大。将首选文本宽度设置为负数将导致文本无界限。
使用
size()
获取文本的实际大小。返回此
QStaticText
的边界矩形的大小。另请参阅
- swap(other)#
- 参数:
other –
QStaticText
将此静态文本实例与
other
交换。此函数非常快速且绝对不会失败。- text()#
- 返回类型:
str
返回
QStaticText
的文本。另请参阅
- textFormat()#
- 返回类型:
返回
QStaticText
的文本格式。- textOption()#
- 返回类型:
返回当前用于控制布局过程的文本选项。
另请参阅
- textWidth()#
- 返回类型:
float
返回此
QStaticText
的首选宽度。另请参阅