- 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 –
QPainterrect –
QRectFdoc –
QTextDocumentposInDocument – 整数
format –
QTextFormat
使用指定的
painter绘制此文本对象。要绘制的矩形大小
rect是之前由intrinsicSize()计算出的尺寸。矩形的位置相对于painter。您还可以获得文档(
doc)和格式(posInDocument)在文档中的位置。另请参阅
- abstract intrinsicSize(doc, posInDocument, format)#
- 参数:
doc –
QTextDocumentposInDocument – 整数
format –
QTextFormat
- 返回类型:
intrinsicSize()函数返回在给定的文档(
doc)和给定位置(posInDocument)由format表示的文本对象的尺寸。计算的大小将用于对该
format下后续调用drawObject()的使用。另请参阅