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