QTextObjectInterface Class
La classe QTextObjectInterface permet de dessiner des objets texte personnalisés sur QTextDocuments. Plus...
| En-tête : | #include <QTextObjectInterface> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
Fonctions publiques
| virtual | ~QTextObjectInterface() |
| virtual void | drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0 |
| virtual QSizeF | intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0 |
Description détaillée
Un objet texte décrit la structure d'un ou de plusieurs éléments dans un document texte ; par exemple, les images importées de HTML sont implémentées à l'aide d'objets texte. Un objet texte sait comment disposer et dessiner ses éléments lors du rendu d'un document.
Qt permet d'insérer des objets texte personnalisés dans un document en enregistrant un object type personnalisé auprès de QTextCharFormat. Une interface QTextObjectInterface doit également être implémentée pour ce type et être registered avec le QAbstractTextDocumentLayout du document. Lorsque le type d'objet est rencontré lors du rendu d'un document QTextDocument, les fonctions intrinsicSize() et drawObject() de l'interface sont appelées.
La liste suivante explique les étapes nécessaires à l'insertion d'un objet texte personnalisé dans un document :
- Choisissez un objet objectType. objectType est un entier dont la valeur est supérieure ou égale à QTextFormat::UserObject.
- Créer un objet QTextCharFormat et définir le type d'objet au type choisi à l'aide de la fonction setObjectType().
- Implémentez la classe QTextObjectInterface.
- Appelez QAbstractTextDocumentLayout::registerHandler() avec une instance de votre sous-classe QTextObjectInterface pour enregistrer votre type d'objet.
- Insérer dans le document QChar::ObjectReplacementCharacter avec le QTextCharFormat susmentionné le type d'objet choisi. Comme indiqué, les fonctions de QTextObjectInterface intrinsicSize() et drawObject() seront alors appelées avec QTextFormat comme paramètre chaque fois que le caractère de remplacement sera rencontré.
Une classe implémentant un objet texte doit hériter à la fois de QObject et de QTextObjectInterface. QObject doit être la première classe héritée. Par exemple :
class SvgTextObject : public QObject, public QTextObjectInterface { Q_OBJECT Q_INTERFACES(QTextObjectInterface)
Les données d'un objet texte sont généralement stockées dans QTextCharFormat à l'aide de QTextCharFormat::setProperty(), puis récupérées à l'aide de QTextCharFormat::property().
Attention : Les opérations de copier-coller ignorent les objets texte personnalisés.
Voir également QTextCharFormat et QTextLayout.
Documentation sur les fonctions membres
[virtual noexcept] QTextObjectInterface::~QTextObjectInterface()
Détruit cette QTextObjectInterface.
[pure virtual] void QTextObjectInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)
Dessine cet objet texte en utilisant le format spécifié painter.
La taille du rectangle, rect, à dessiner est la taille précédemment calculée par intrinsicSize(). La position du rectangle est relative au document painter.
Vous obtenez également le document (doc) et la position (posInDocument) du format dans ce document.
Voir aussi intrinsicSize().
[pure virtual] QSizeF QTextObjectInterface::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format)
La fonction intrinsicSize() renvoie la taille de l'objet texte représenté par format dans le document donné (doc) à la position donnée (posInDocument).
La taille calculée sera utilisée pour les appels ultérieurs à drawObject() pour ce format.
Voir également drawObject().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.