Inherited by: QPyTextObject
The PySide.QtGui.QTextObjectInterface class allows drawing of custom text objects in PySide.QtGui.QTextDocument s.
A text object describes the structure of one or more elements in a text document; for instance, images imported from HTML are implemented using text objects. A text object knows how to lay out and draw its elements when a document is being rendered.
Qt allows custom text objects to be inserted into a document by registering a custom object type with PySide.QtGui.QTextCharFormat . A PySide.QtGui.QTextObjectInterface must also be implemented for this type and be registered with the PySide.QtGui.QAbstractTextDocumentLayout of the document. When the object type is encountered while rendering a PySide.QtGui.QTextDocument , the PySide.QtGui.QTextObjectInterface.intrinsicSize() and PySide.QtGui.QTextObjectInterface.drawObject() functions of the interface are called.
The following list explains the required steps of inserting a custom text object into a document:
- Choose an objectType. The objectType is an integer with a value greater or equal to QTextFormat.UserObject .
- Create a PySide.QtGui.QTextCharFormat object and set the object type to the chosen type using the setObjectType() function.
- Implement the PySide.QtGui.QTextObjectInterface class.
- Call QAbstractTextDocumentLayout.registerHandler() with an instance of your PySide.QtGui.QTextObjectInterface subclass to register your object type.
- Insert QChar.ObjectReplacementCharacter with the aforementioned PySide.QtGui.QTextCharFormat of the chosen object type into the document. As mentioned, the functions of PySide.QtGui.QTextObjectInterface PySide.QtGui.QTextObjectInterface.intrinsicSize() and PySide.QtGui.QTextObjectInterface.drawObject() will then be called with the PySide.QtGui.QTextFormat as parameter whenever the replacement character is encountered.
A class implementing a text object needs to inherit both PySide.QtCore.QObject and PySide.QtGui.QTextObjectInterface . PySide.QtCore.QObject must be the first class inherited. For instance:
class SvgTextObject(QObject, QTextObjectInterface): def __init__(self,...): super(SvgTextObject, self).__init__(...) ...The data of a text object is usually stored in the PySide.QtGui.QTextCharFormat using QTextCharFormat.setProperty() , and then retrieved with QTextCharFormat.property() .
Warning
Copy and Paste operations ignore custom text objects.
See also
Text Object Example PySide.QtGui.QTextCharFormat PySide.QtGui.QTextLayout
Parameters: |
|
---|
Draws this text object using the specified painter .
The size of the rectangle, rect , to draw in is the size previously calculated by PySide.QtGui.QTextObjectInterface.intrinsicSize() . The rectangles position is relative to the painter .
You also get the document (doc ) and the position (posInDocument ) of the format in that document.
Parameters: |
|
---|---|
Return type: |
The PySide.QtGui.QTextObjectInterface.intrinsicSize() function returns the size of the text object represented by format in the given document (doc ) at the given position (posInDocument ).
The size calculated will be used for subsequent calls to PySide.QtGui.QTextObjectInterface.drawObject() for this format .