Sur cette page

QAbstractTextDocumentLayout Class

La classe `QAbstractTextDocumentLayout` est une classe de base abstraite utilisée pour implémenter des mises en page personnalisées pour les objets `QTextDocument`. En savoir plus...

En-tête : #include <QAbstractTextDocumentLayout>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Hérite de : QObject
Hérité par :

QPlainTextDocumentLayout

Remarque : toutes les fonctions de cette classe sont réentrantes.

Types publics

struct PaintContext
struct Selection

Fonctions publiques

QAbstractTextDocumentLayout(QTextDocument *document)
QString anchorAt(const QPointF &position) const
virtual QRectF blockBoundingRect(const QTextBlock &block) const = 0
QTextBlock blockWithMarkerAt(const QPointF &pos) const
QTextDocument *document() const
virtual QSizeF documentSize() const = 0
virtual void draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0
QTextFormat formatAt(const QPointF &pos) const
virtual QRectF frameBoundingRect(QTextFrame *frame) const = 0
QTextObjectInterface *handlerForObject(int objectType) const
virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0
QString imageAt(const QPointF &pos) const
virtual int pageCount() const = 0
QPaintDevice *paintDevice() const
void registerHandler(int objectType, QObject *component)
void setPaintDevice(QPaintDevice *device)
void unregisterHandler(int objectType, QObject *component = nullptr)

Signaux

void documentSizeChanged(const QSizeF &newSize)
void pageCountChanged(int newPages)
void update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
void updateBlock(const QTextBlock &block)

Fonctions protégées

virtual void documentChanged(int position, int charsRemoved, int charsAdded) = 0
virtual void drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
QTextCharFormat format(int position)
virtual void positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
virtual void resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

Description détaillée

Le moteur de mise en page standard fourni par Qt permet de gérer des tâches simples de traitement de texte, notamment les images intégrées, les listes et les tableaux.

Certaines applications, par exemple un traitement de texte ou une application de PAO, peuvent nécessiter davantage de fonctionnalités que celles fournies par le moteur de mise en page de Qt. Dans ce cas, vous pouvez créer une sous-classe de QAbstractTextDocumentLayout afin de définir un comportement de mise en page personnalisé pour vos documents texte.

Une instance de la sous-classe de QAbstractTextDocumentLayout peut être associée à un objet QTextDocument à l’aide de la fonction setDocumentLayout().

Vous pouvez insérer des objets personnalisés dans un ` QTextDocument` ; consultez la description de la classe ` QTextObjectInterface ` pour plus de détails.

Voir également QTextObjectInterface.

Documentation sur les fonctions membres

[explicit] QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)

Crée une nouvelle mise en page de document texte pour l'document.

QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const

Renvoie la référence de l'ancre à l'adresse position, ou une chaîne vide si aucune ancre n'existe à cet endroit.

[pure virtual] QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const

Renvoie le rectangle englobant de block.

QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const

Renvoie le bloc (probablement un élément de liste) dont l'marker e se trouve à la position indiquée pos.

QTextDocument *QAbstractTextDocumentLayout::document() const

Renvoie le document texte sur lequel cette mise en page est appliquée.

[pure virtual protected] void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)

Cette fonction est appelée chaque fois que le contenu du document change. Un changement se produit lorsqu’on insère ou supprime du texte, ou une combinaison des deux. Le changement est spécifié par les paramètres position, charsRemoved et charsAdded, qui correspondent respectivement à la position du caractère de début du changement, au nombre de caractères supprimés du document et au nombre de caractères ajoutés.

Par exemple, lors de l’insertion du texte « Hello » dans un document vide, charsRemoved serait égal à 0 et charsAdded à 5 (la longueur de la chaîne).

Le remplacement de texte est une combinaison de suppression et d’insertion. Par exemple, si le texte « Hello » est remplacé par « Hi », charsRemoved vaut 5 et charsAdded vaut 2.

Pour les sous-classes de ` QAbstractTextDocumentLayout`, il s’agit de la fonction centrale où s’effectue une grande partie du travail de mise en page et de positionnement du contenu du document.

Par exemple, dans une sous-classe qui se contente d’agencer des blocs de texte, une implémentation de cette fonction devrait effectuer les opérations suivantes :

  • Déterminer la liste des objets ` QTextBlock` modifiés à l’aide des paramètres fournis.
  • L'objet ` QTextLayout ` correspondant à chaque objet ` QTextBlock ` doit être traité. Vous pouvez accéder à la mise en page de l'objet ` QTextBlock` à l'aide de la fonction ` QTextBlock::layout()`. Ce traitement doit tenir compte de la taille de la page du document.
  • Si le nombre total de pages a changé, le signal ` pageCountChanged()` doit être émis.
  • Si la taille totale a changé, le signal « documentSizeChanged() » doit être émis.
  • Le signal ` update()` doit être émis pour planifier le rafraîchissement des zones de la mise en page qui doivent être rafraîchies.

Voir également QTextLayout.

[pure virtual] QSizeF QAbstractTextDocumentLayout::documentSize() const

Renvoie la taille totale de la mise en page du document.

Cette information peut être utilisée par les widgets d'affichage pour mettre à jour correctement leurs barres de défilement.

Voir également documentSizeChanged() et QTextDocument::pageSize.

[signal] void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)

Ce signal est émis lorsque la taille de la mise en page du document passe à « newSize ».

Les sous-classes de ` QAbstractTextDocumentLayout ` doivent émettre ce signal lorsque la taille de la mise en page entière du document change. Ce signal est utile pour les widgets qui affichent des documents texte, car il leur permet de mettre à jour correctement leurs barres de défilement.

Voir également ` documentSize()`.

[pure virtual] void QAbstractTextDocumentLayout::draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context)

Dessine la mise en page avec l'painter spécifiée à l'aide de l'context spécifiée.

[virtual protected] void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)

Cette fonction est appelée pour dessiner l'objet en ligne, object, avec l'painter fournie, à l'intérieur du rectangle spécifié par rect, en utilisant le texte spécifié format.

posInDocument spécifie la position de l’objet dans le document.

L'implémentation par défaut appelle la fonction drawObject() sur les gestionnaires d'objets. Cette fonction n'est appelée que dans Qt. Les sous-classes peuvent réimplémenter cette fonction pour personnaliser le dessin des objets en ligne.

Voir également draw().

[protected] QTextCharFormat QAbstractTextDocumentLayout::format(int position)

Renvoie le format de caractères applicable à l'position.

QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const

Renvoie le format de texte situé à la position indiquée pos.

[pure virtual] QRectF QAbstractTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const

Renvoie le rectangle englobant de frame.

QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectType) const

Renvoie un gestionnaire pour les objets de type « objectType ».

[pure virtual] int QAbstractTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const

Renvoie la position du curseur pour l’ point on donnée avec l’ accuracy on spécifiée. Renvoie -1 si aucune position de curseur valide n’a été trouvée.

QString QAbstractTextDocumentLayout::imageAt(const QPointF &pos) const

Renvoie la source de l'image à la position indiquée pos, ou une chaîne vide si aucune image n'existe à cet endroit.

[pure virtual] int QAbstractTextDocumentLayout::pageCount() const

Renvoie le nombre de pages contenues dans la mise en page.

Voir aussi pageCountChanged().

[signal] void QAbstractTextDocumentLayout::pageCountChanged(int newPages)

Ce signal est émis lorsque le nombre de pages de la mise en page change ; ` newPages ` correspond au nombre de pages mis à jour.

Les sous-classes de ` QAbstractTextDocumentLayout ` doivent émettre ce signal lorsque le nombre de pages de la mise en page a changé. Les modifications du nombre de pages sont causées par des modifications de la mise en page ou du contenu même du document.

Voir également pageCount().

QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const

Renvoie le périphérique de dessin utilisé pour afficher la mise en page du document.

Voir aussi setPaintDevice().

[virtual protected] void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

Affiche l'objet en ligne item à l'aide du texte fourni format.

posInDocument Spécifie la position de l’objet au sein du document.

L'implémentation par défaut ne fait rien. Cette fonction n'est appelée que dans Qt. Les sous-classes peuvent réimplémenter cette fonction pour personnaliser la position des objets en ligne.

Voir également drawInlineObject().

void QAbstractTextDocumentLayout::registerHandler(int objectType, QObject *component)

Enregistre l'component on fournie en tant que gestionnaire pour les éléments de l'objectType on indiquée.

Remarque : la fonction registerHandler () doit être appelée une fois pour chaque type d’objet. Cela signifie qu’il n’existe qu’un seul gestionnaire pour plusieurs caractères de remplacement d’un même type d’objet.

La mise en page du document texte ne prend pas possession de component.

[virtual protected] void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

Définit la taille de l'objet en ligne item correspondant au texte format.

posInDocument Spécifie la position de l'objet au sein du document.

L'implémentation par défaut redimensionne l'item à la taille renvoyée par la fonction intrinsicSize() du gestionnaire d'objet. Cette fonction n'est appelée que dans Qt. Les sous-classes peuvent réimplémenter cette fonction pour personnaliser le redimensionnement des objets en ligne.

void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)

Définit le périphérique de dessin utilisé pour le rendu de la mise en page du document sur l'device spécifié.

Voir aussi paintDevice().

void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)

Supprime l'enregistrement de l'component indiquée en tant que gestionnaire pour les éléments de l'objectType spécifiée, ou de tout gestionnaire si l'component n'est pas spécifiée.

[signal] void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))

Ce signal est émis lorsque le rectangle rect a été mis à jour.

Les sous-classes de ` QAbstractTextDocumentLayout ` doivent émettre ce signal lorsque la mise en page du contenu change, afin de procéder à un rafraîchissement de l'affichage.

[signal] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)

Ce signal est émis lorsque l'block spécifié a été mis à jour.

Les sous-classes de ` QAbstractTextDocumentLayout ` doivent émettre ce signal lorsque la mise en page de ` block ` a changé, afin de procéder à un rafraîchissement de l'affichage.

© 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.