QAbstractTextDocumentLayout Class
La classe QAbstractTextDocumentLayout est une classe de base abstraite utilisée pour mettre en œuvre des présentations personnalisées pour les QTextDocuments. Plus d'informations...
| En-tête : | #include <QAbstractTextDocumentLayout> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Hérite : | QObject |
| Hérité par : |
- Liste de tous les membres, y compris les membres hérités
- QAbstractTextDocumentLayout fait partie de Rich Text Processing APIs.
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
La mise en page standard fournie par Qt peut gérer le traitement de texte simple, y compris les images en ligne, les listes et les tableaux.
Certaines applications, par exemple un traitement de texte ou une application de PAO, peuvent avoir besoin de plus de fonctionnalités que celles fournies par le moteur de mise en page de Qt. Dans ce cas, vous pouvez sous-classer QAbstractTextDocumentLayout pour fournir un comportement de mise en page personnalisé pour vos documents texte.
Une instance de la sous-classe QAbstractTextDocumentLayout peut être installée sur un objet QTextDocument à l'aide de la fonction setDocumentLayout().
Vous pouvez insérer des objets personnalisés dans un objet QTextDocument; voir la description de la classe QTextObjectInterface pour plus de détails.
Voir également QTextObjectInterface.
Documentation des fonctions membres
[explicit] QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)
Crée une nouvelle mise en page de document texte pour l'adresse 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 de délimitation de block.
QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const
Renvoie le bloc (probablement un élément de liste) dont l'adresse marker se trouve à la position donnée pos.
QTextDocument *QAbstractTextDocumentLayout::document() const
Renvoie le document texte sur lequel cette mise en page fonctionne.
[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. Une modification se produit lorsque du texte est inséré, supprimé ou une combinaison de ces deux éléments. La modification est spécifiée par position, charsRemoved, et charsAdded correspondant à la position du caractère de départ de la modification, 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 sera 0 et charsAdded sera 5 (la longueur de la chaîne).
Le remplacement du texte est une combinaison de la suppression et de l'insertion. Par exemple, si le texte "Hello" est remplacé par "Hi", charsRemoved vaudra 5 et charsAdded vaudra 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 ne fait qu'arranger des blocs de texte, une implémentation de cette fonction devrait faire ce qui suit :
- Déterminer la liste des QTextBlock(s) modifiés à l'aide des paramètres fournis.
- L'objet QTextLayout correspondant à chaque objet QTextBlock doit être traité. Vous pouvez accéder à la présentation de QTextBlock à l'aide de la fonction QTextBlock::layout(). Ce traitement doit tenir compte de la taille des pages 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 la remise en peinture des zones de la mise en page qui doivent être repeintes.
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 aussi 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 totale de la présentation du document change. Ce signal est utile pour les widgets qui affichent des documents textuels, 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 l'agencement avec l'adresse painter en utilisant l'adresse context.
[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 inline, object, avec la donnée painter dans le 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 drawObject() sur les gestionnaires d'objets. Cette fonction n'est appelée qu'à l'intérieur de 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'adresse position.
QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const
Renvoie le format de texte à la position donnée pos.
[pure virtual] QRectF QAbstractTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const
Renvoie le rectangle de délimitation de frame.
QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectType) const
Renvoie un gestionnaire pour les objets de l'adresse objectType.
[pure virtual] int QAbstractTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const
Renvoie la position du curseur pour l'adresse point donnée avec l'adresse accuracy spécifiée. Retourne -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 donné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 également pageCountChanged().
[signal] void QAbstractTextDocumentLayout::pageCountChanged(int newPages)
Ce signal est émis lorsque le nombre de pages de la mise en page change ; newPages est le 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 dues à des modifications de la mise en page ou du contenu du document lui-même.
Voir également pageCount().
QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const
Renvoie le dispositif de peinture utilisé pour le rendu de la mise en page du document.
Voir aussi setPaintDevice().
[virtual protected] void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
Dispose l'objet en ligne item en utilisant le texte donné format.
posInDocument spécifie la position de l'objet dans le document.
L'implémentation par défaut ne fait rien. Cette fonction n'est appelée qu'au sein de 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'adresse component en tant que gestionnaire des éléments de l'adresse objectType.
Remarque : registerHandler() doit être appelé une fois pour chaque type d'objet. Cela signifie qu'il n'y a qu'un seul gestionnaire pour plusieurs caractères de remplacement du même type d'objet.
La mise en page du document texte n'est pas propriétaire de component.
[virtual protected] void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
Définit la taille de l'objet inline item correspondant au texte format.
posInDocument spécifie la position de l'objet dans le document.
L'implémentation par défaut redimensionne l'objet item à la taille renvoyée par la fonction intrinsicSize() du gestionnaire d'objet. Cette fonction n'est appelée qu'à l'intérieur de 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 dispositif de peinture utilisé pour le rendu de la mise en page du document à l'adresse device.
Voir aussi paintDevice().
void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)
Annule l'enregistrement de l'adresse component en tant que gestionnaire des éléments de l'adresse objectType, ou de tout autre gestionnaire si l'adresse 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 disposition du contenu change afin de repeindre.
[signal] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)
Ce signal est émis lorsque le site block spécifié a été mis à jour.
Les sous-classes de QAbstractTextDocumentLayout doivent émettre ce signal lorsque la disposition de block a changé afin de repeindre.
© 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.