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:
画家 –
QPainterrect –
QRectF文档 –
QTextDocumentposInDocument – int
format –
QTextFormat
使用指定的
painter绘制此文本对象。要绘制的矩形的大小,
rect,是之前由intrinsicSize()计算的大小。矩形的位置相对于painter。你还可以获取文档(
doc)和该文档中format的位置(posInDocument)。另请参阅
- abstract intrinsicSize(doc, posInDocument, format)¶
- Parameters:
文档 –
QTextDocumentposInDocument – int
format –
QTextFormat
- Return type:
intrinsicSize() 函数返回由
format表示的文本对象在给定文档 (doc) 中给定位置 (posInDocument) 的大小。计算的大小将用于后续对此
format的drawObject()调用。另请参阅