Sur cette page

QTextObjectInterface Class

La classe `QTextObjectInterface` permet de dessiner des objets texte personnalisés dans les ` QTextDocument`. En savoir 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 plusieurs éléments dans un document texte ; par exemple, les images importées depuis du code HTML sont implémentées à l'aide d'objets texte. Un objet texte sait comment agencer 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 une interface personnalisée ( object type ) via ` QTextCharFormat`. Une interface `QTextObjectInterface` doit également être implémentée pour ce type et être compatible ( registered ) avec l’interface de texte ( QAbstractTextDocumentLayout ) du document. Lorsque le type d’objet est rencontré lors du rendu d’un objet texte ( 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 type d’ objectType. L’ objectType est un entier dont la valeur est supérieure ou égale à QTextFormat::UserObject.
  • Créez un objet ` QTextCharFormat ` et définissez le type de l'objet sur le type choisi à l'aide de la fonction `setObjectType()`.
  • Implémentez la classe QTextObjectInterface.
  • Appelez la méthode ` QAbstractTextDocumentLayout::registerHandler()` avec une instance de votre sous-classe de `QTextObjectInterface` pour enregistrer votre type d’objet.
  • Insérez ` QChar::ObjectReplacementCharacter ` avec l'QTextCharFormat, mentionnée précédemment, du type d'objet choisi dans le document. Comme indiqué, les fonctions de `QTextObjectInterface`, ` intrinsicSize()` et ` drawObject()`, seront alors appelées avec ` QTextFormat ` comme paramètre chaque fois qu'un 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 l’ QTextCharFormat à l’aide de QTextCharFormat::setProperty(), puis récupérées avec QTextCharFormat::property().

Avertissement : les opérationsde copier-coller ignorent les objets texte personnalisés.

Voir également QTextCharFormat et QTextLayout.

Documentation des fonctions membres

[virtual noexcept] QTextObjectInterface::~QTextObjectInterface()

Supprime cette page : QTextObjectInterface.

[pure virtual] void QTextObjectInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)

Dessine cet objet texte à l'aide de la fonction painter spécifiée.

La taille du rectangle, rect, dans lequel le dessin doit être effectué correspond à celle précédemment calculée par la fonction intrinsicSize(). La position du rectangle est relative à l’élément painter.

Vous obtenez également le document (doc) et la position (posInDocument) de l'format dans ce document.

Voir également 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 indiquée (posInDocument).

La taille calculée sera utilisée pour les appels suivants à drawObject() concernant ce format.

Voir également la fonction 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.