QAbstractTextDocumentLayout Class
Die Klasse `QAbstractTextDocumentLayout` ist eine abstrakte Basisklasse, die zur Implementierung benutzerdefinierter Layouts für `QTextDocuments` verwendet wird. Mehr...
| Header: | #include <QAbstractTextDocumentLayout> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Erbt von: | QObject |
| Vererbt an: |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QAbstractTextDocumentLayout ist Teil der Rich-Text-Verarbeitungs-APIs.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Typen
| struct | PaintContext |
| struct | Selection |
Öffentliche Funktionen
| 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) |
Signale
| void | documentSizeChanged(const QSizeF &newSize) |
| void | pageCountChanged(int newPages) |
| void | update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.)) |
| void | updateBlock(const QTextBlock &block) |
Geschützte Funktionen
| 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) |
Ausführliche Beschreibung
Das von Qt bereitgestellte Standard-Layout kann einfache Textverarbeitung einschließlich Inline-Bildern, Listen und Tabellen bewältigen.
Manche Anwendungen, z. B. ein Textverarbeitungsprogramm oder eine DTP-Anwendung, benötigen möglicherweise mehr Funktionen als die von der Qt-Layout-Engine bereitgestellten. In diesem Fall können Sie eine Unterklasse von `QAbstractTextDocumentLayout` erstellen, um ein benutzerdefiniertes Layout-Verhalten für Ihre Textdokumente bereitzustellen.
Eine Instanz der Unterklasse von `QAbstractTextDocumentLayout` kann mit der Funktion ` setDocumentLayout()` an ein ` QTextDocument `-Objekt angehängt werden.
Sie können benutzerdefinierte Objekte in ein ` QTextDocument` einfügen; Einzelheiten finden Sie in der Klassenbeschreibung von ` QTextObjectInterface `.
Siehe auch „ QTextObjectInterface “.
Dokumentation zu den Mitgliedsfunktionen
[explicit] QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)
Erstellt ein neues Textdokumentlayout für die angegebene „ document “.
QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const
Gibt die Referenz des Ankers mit dem angegebenen Namen „ position “ zurück oder eine leere Zeichenkette, falls an dieser Stelle kein Anker vorhanden ist.
[pure virtual] QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
Gibt das Begrenzungsrechteck von ` block` zurück.
QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const
Gibt den Block (wahrscheinlich ein Listenelement) zurück, dessen „ marker “ an der angegebenen Position „ pos “ zu finden ist.
QTextDocument *QAbstractTextDocumentLayout::document() const
Gibt das Textdokument zurück, auf das dieses Layout angewendet wird.
[pure virtual protected] void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)
Diese Funktion wird immer dann aufgerufen, wenn sich der Inhalt des Dokuments ändert. Eine Änderung liegt vor, wenn Text eingefügt, entfernt oder eine Kombination aus beidem vorgenommen wird. Die Änderung wird durch die Parameter „ position “, „ charsRemoved “ und „ charsAdded “ angegeben, die der Startzeichenposition der Änderung, der Anzahl der aus dem Dokument entfernten Zeichen und der Anzahl der hinzugefügten Zeichen entsprechen.
Wenn beispielsweise der Text „Hello“ in ein leeres Dokument eingefügt wird, wäre charsRemoved gleich 0 und charsAdded gleich 5 (die Länge der Zeichenkette).
Das Ersetzen von Text ist eine Kombination aus Löschen und Einfügen. Wenn beispielsweise der Text „Hello“ durch „Hi“ ersetzt wird, wäre charsRemoved gleich 5 und charsAdded gleich 2.
Für Unterklassen von ` QAbstractTextDocumentLayout` ist dies die zentrale Funktion, in der ein großer Teil der Arbeit zum Layout und zur Positionierung von Dokumentinhalten erledigt wird.
In einer Unterklasse, die beispielsweise nur Textblöcke anordnet, müsste eine Implementierung dieser Funktion Folgendes tun:
- Ermitteln Sie anhand der bereitgestellten Parameter die Liste der geänderten „ QTextBlock “-Objekte.
- Das zu jedem „ QTextBlock “-Objekt gehörende „ QTextLayout “-Objekt muss verarbeitet werden. Auf das Layout des „ QTextBlock “ kann über die Funktion „ QTextBlock::layout()“ zugegriffen werden. Bei dieser Verarbeitung sollte die Seitengröße des Dokuments berücksichtigt werden.
- Wenn sich die Gesamtseitenzahl geändert hat, sollte das Signal „ pageCountChanged()“ ausgelöst werden.
- Wenn sich die Gesamtgröße geändert hat, sollte das Signal „ documentSizeChanged()“ ausgelöst werden.
- Das Signal „ update()“ sollte ausgelöst werden, um eine Neuzeichnung der Bereiche im Layout zu planen, die neu gezeichnet werden müssen.
Siehe auch „ QTextLayout “.
[pure virtual] QSizeF QAbstractTextDocumentLayout::documentSize() const
Gibt die Gesamtgröße des Dokumentlayouts zurück.
Diese Information kann von Anzeige-Widgets verwendet werden, um ihre Bildlaufleisten korrekt anzupassen.
Siehe auch „ documentSizeChanged()“ und „ QTextDocument::pageSize “.
[signal] void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)
Dieses Signal wird ausgelöst, wenn sich die Größe des Dokumentlayouts auf „ newSize “ ändert.
Unterklassen von ` QAbstractTextDocumentLayout ` sollten dieses Signal auslösen, wenn sich die Größe des gesamten Dokumentlayouts ändert. Dieses Signal ist nützlich für Widgets, die Textdokumente anzeigen, da es ihnen ermöglicht, ihre Bildlaufleisten korrekt zu aktualisieren.
Siehe auch ` documentSize()`.
[pure virtual] void QAbstractTextDocumentLayout::draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context)
Zeichnet das Layout mit dem angegebenen „ painter “ unter Verwendung des angegebenen „ context “.
[virtual protected] void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
Diese Funktion wird aufgerufen, um das Inline-Objekt „ object “ mit dem angegebenen „ painter “ innerhalb des durch „ rect “ festgelegten Rechtecks unter Verwendung des angegebenen Textes „ format “ zu zeichnen.
posInDocument gibt die Position des Objekts innerhalb des Dokuments an.
Die Standardimplementierung ruft drawObject() in den Objekt-Handlern auf. Diese Funktion wird nur innerhalb von Qt aufgerufen. Unterklassen können diese Funktion neu implementieren, um das Zeichnen von Inline-Objekten anzupassen.
Siehe auch „ draw()“.
[protected] QTextCharFormat QAbstractTextDocumentLayout::format(int position)
Gibt das Zeichenformat zurück, das unter der angegebenen Adresse position gilt.
QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const
Gibt das Textformat an der angegebenen Position zurück pos.
[pure virtual] QRectF QAbstractTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const
Gibt das Begrenzungsrechteck von ` frame` zurück.
QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectType) const
Gibt einen Handler für Objekte der angegebenen „ objectType “ zurück.
[pure virtual] int QAbstractTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const
Gibt die Cursorposition für den angegebenen ` point ` mit dem angegebenen ` accuracy` zurück. Gibt -1 zurück, wenn keine gültige Cursorposition gefunden wurde.
QString QAbstractTextDocumentLayout::imageAt(const QPointF &pos) const
Gibt die Quelle des Bildes an der angegebenen Position pos zurück oder eine leere Zeichenkette, falls an dieser Stelle kein Bild vorhanden ist.
[pure virtual] int QAbstractTextDocumentLayout::pageCount() const
Gibt die Anzahl der im Layout enthaltenen Seiten zurück.
Siehe auch pageCountChanged().
[signal] void QAbstractTextDocumentLayout::pageCountChanged(int newPages)
Dieses Signal wird ausgelöst, wenn sich die Anzahl der Seiten im Layout ändert; „ newPages “ ist die aktualisierte Seitenanzahl.
Unterklassen von ` QAbstractTextDocumentLayout ` sollten dieses Signal auslösen, wenn sich die Anzahl der Seiten im Layout geändert hat. Änderungen der Seitenanzahl werden durch Änderungen am Layout oder am Dokumentinhalt selbst verursacht.
Siehe auch ` pageCount()`.
QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const
Gibt das Zeichen-Device zurück, das zum Rendern des Dokumentlayouts verwendet wird.
Siehe auch „ setPaintDevice()“.
[virtual protected] void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
Rendert das Inline-Objekt „ item “ unter Verwendung des angegebenen Textes „ format “.
posInDocument Legt die Position des Objekts innerhalb des Dokuments fest.
Die Standardimplementierung führt keine Aktion aus. Diese Funktion wird nur innerhalb von Qt aufgerufen. Unterklassen können diese Funktion neu implementieren, um die Position von Inline-Objekten anzupassen.
Siehe auch ` drawInlineObject()`.
void QAbstractTextDocumentLayout::registerHandler(int objectType, QObject *component)
Registriert die angegebene Funktion „ component “ als Handler für Elemente des angegebenen Objekttyps „ objectType “.
Hinweis: registerHandler () muss für jeden Objekttyp einmal aufgerufen werden. Das bedeutet, dass es für mehrere Ersetzungszeichen desselben Objekttyps nur einen Handler gibt.
Das Textdokument-Layout übernimmt keine Eigentumsrechte an ` component`.
[virtual protected] void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
Legt die Größe des Inline-Objekts item fest, das dem Text format entspricht.
posInDocument Legt die Position des Objekts innerhalb des Dokuments fest.
Die Standardimplementierung passt die Größe von ` item ` an die Größe an, die von der Funktion `intrinsicSize()` des Objekt-Handlers zurückgegeben wird. Diese Funktion wird nur innerhalb von Qt XML aufgerufen. Unterklassen können diese Funktion neu implementieren, um die Größenanpassung von Inline-Objekten individuell anzupassen.
void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)
Setzt das zum Rendern des Dokumentlayouts verwendete Zeichen-Device auf das angegebene device.
Siehe auch paintDevice().
void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)
Hebt die Registrierung des angegebenen „ component “ als Handler für Elemente des angegebenen „ objectType “ auf oder, falls „ component “ nicht angegeben ist, die Registrierung eines beliebigen Handlers.
[signal] void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
Dieses Signal wird ausgelöst, wenn das Rechteck „ rect “ aktualisiert wurde.
Unterklassen von ` QAbstractTextDocumentLayout ` sollten dieses Signal aussenden, wenn sich das Layout des Inhalts ändert, damit eine Neuzeichnung erfolgt.
[signal] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)
Dieses Signal wird ausgelöst, wenn das angegebene „ block “ aktualisiert wurde.
Unterklassen von ` QAbstractTextDocumentLayout ` sollten dieses Signal auslösen, wenn sich das Layout von ` block ` geändert hat, um eine Neuzeichnung durchzuführen.
© 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.