- class QTextObjectInterface#
QTextObjectInterface
类允许在QTextDocument
中绘制自定义文本对象。 更多...概述#
虚拟方法#
def
drawObject()
def
intrinsicSize()
注意
本文档可能包含从 C++ 自动翻译到 Python 的代码片段,我们始终欢迎对片段翻译的贡献。如果您发现翻译中有问题,还可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来通知我们。
详细说明#
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
文本对象描述文本文档中一个或多个元素的结构;例如,从 HTML 导入的图像使用文本对象实现。文本对象知道如何在文档渲染时布局和绘制其元素。
Qt 允许通过将自定义的
对象类型
注册到QTextCharFormat
中将自定义文本对象插入文档中。还必须为该类型实现QTextObjectInterface
并在文档的QAbstractTextDocumentLayout
中注册
。当在渲染QTextDocument
时遇到对象类型,将调用接口的intrinsicSize()
和drawObject()
函数。以下列表解释了将自定义文本对象插入文档所需的步骤
选择一个
objectType
。该objectType
是一个大于或等于UserObject
的整数值。创建一个
QTextCharFormat
对象,并使用 setObjectType() 函数将对象类型设置为所选类型。实现
QTextObjectInterface
类。使用您的
QTextObjectInterface
子类实例调用registerHandler()
以注册您的对象类型。在文档中使用之前提到的
QTextCharFormat
将 QChar::ObjectReplacementCharacter 插入到选择了的对象类型中。如前所述,QTextObjectInterface
的intrinsicSize()
和drawObject()
函数将在遇到替换字符时以QTextFormat
作为参数被调用。
实现文本对象类的类需要继承QObject和
QTextObjectInterface
。QObject必须是继承的第一个类。例如class SvgTextObject(QObject, QTextObjectInterface): Q_OBJECT Q_INTERFACES(QTextObjectInterface)
文本对象的数据通常使用
setProperty()
存储在QTextCharFormat
中,然后使用property()
检索。- abstract drawObject(painter, rect, doc, posInDocument, format)#
- 参数:
painter –
QPainter
rect –
QRectF
doc –
QTextDocument
posInDocument – 整数
format –
QTextFormat
使用指定的
painter
绘制此文本对象。要绘制的矩形大小
rect
是之前由intrinsicSize()
计算出的尺寸。矩形的位置相对于painter
。您还可以获得文档(
doc
)和格式(posInDocument
)在文档中的位置。另请参阅
- abstract intrinsicSize(doc, posInDocument, format)#
- 参数:
doc –
QTextDocument
posInDocument – 整数
format –
QTextFormat
- 返回类型:
intrinsicSize()函数返回在给定的文档(
doc
)和给定位置(posInDocument
)由format
表示的文本对象的尺寸。计算的大小将用于对该
format
下后续调用drawObject()
的使用。另请参阅