QAbstractTextDocumentLayout Class
Die Klasse QAbstractTextDocumentLayout ist eine abstrakte Basisklasse, die zur Implementierung benutzerdefinierter Layouts für QTextDocuments verwendet wird. Mehr...
Kopfzeile: | #include <QAbstractTextDocumentLayout> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Vererbt: | QObject |
Vererbt von: |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QAbstractTextDocumentLayout ist Teil der Rich Text Processing APIs.
Hinweis: Alle Funktionen in 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) |
Detaillierte Beschreibung
Das von Qt bereitgestellte Standard-Layout kann einfache Textverarbeitung einschließlich Inline-Bildern, Listen und Tabellen verarbeiten.
Einige Anwendungen, z.B. ein Textverarbeitungsprogramm oder eine DTP-Anwendung, benötigen möglicherweise mehr Funktionen als die, die von der Qt-Layout-Engine zur Verfügung gestellt werden. In diesem Fall können Sie eine Unterklasse QAbstractTextDocumentLayout erstellen, um benutzerdefiniertes Layout-Verhalten für Ihre Textdokumente bereitzustellen.
Eine Instanz der Unterklasse QAbstractTextDocumentLayout kann auf einem QTextDocument Objekt mit der Funktion setDocumentLayout() installiert werden.
Sie können benutzerdefinierte Objekte in ein QTextDocument Objekt einfügen; siehe die QTextObjectInterface Klassenbeschreibung für Details.
Siehe auch QTextObjectInterface.
Dokumentation der Mitgliedsfunktionen
[explicit]
QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)
Erzeugt ein neues Textdokument-Layout für das angegebene document.
QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const
Gibt die Referenz des Ankers an der angegebenen position zurück, oder eine leere Zeichenkette, wenn an diesem Punkt kein Anker existiert.
[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 gefunden wird.
QTextDocument *QAbstractTextDocumentLayout::document() const
Gibt das Textdokument zurück, für das dieses Layout verwendet 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 wird. Die Änderung wird durch position, charsRemoved und charsAdded angegeben, die der Anfangsposition der Änderung, der Anzahl der aus dem Dokument entfernten Zeichen und der Anzahl der hinzugefügten Zeichen entsprechen.
Wenn Sie beispielsweise den Text "Hallo" in ein leeres Dokument einfügen, wäre charsRemoved gleich 0 und charsAdded gleich 5 (die Länge der Zeichenfolge).
Das Ersetzen von Text ist eine Kombination aus Entfernen und Einfügen. Wenn der Text "Hallo" beispielsweise durch "Hi" ersetzt wird, wäre charsRemoved gleich 5 und charsAdded gleich 2.
Für Unterklassen von QAbstractTextDocumentLayout ist dies die zentrale Funktion, bei der ein großer Teil der Arbeit für das Layout und die Positionierung der Dokumentinhalte erledigt wird.
In einer Unterklasse, die nur Textblöcke anordnet, müsste eine Implementierung dieser Funktion zum Beispiel Folgendes tun:
- Ermitteln der Liste der geänderten QTextBlock(s) anhand der übergebenen Parameter.
- Für jedes QTextBlock Objekt muss das entsprechende QTextLayout Objekt verarbeitet werden. Sie können auf das Layout von QTextBlock mit der Funktion QTextBlock::layout() zugreifen. Bei dieser Verarbeitung sollte die Seitengröße des Dokuments berücksichtigt werden.
- Wenn sich die Gesamtzahl der Seiten geändert hat, sollte das Signal pageCountChanged() ausgegeben werden.
- Wenn sich die Gesamtgröße geändert hat, sollte das Signal documentSizeChanged() ausgegeben werden.
- Das Signal update() sollte ausgegeben werden, um einen Neuanstrich der Bereiche im Layout zu planen, die einen Neuanstrich benötigen.
Siehe auch QTextLayout.
[pure virtual]
QSizeF QAbstractTextDocumentLayout::documentSize() const
Gibt die Gesamtgröße des Dokumentenlayouts zurück.
Diese Information kann von Anzeige-Widgets verwendet werden, um ihre Bildlaufleisten korrekt zu aktualisieren.
Siehe auch documentSizeChanged() und QTextDocument::pageSize.
[signal]
void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)
Dieses Signal wird ausgegeben, wenn sich die Größe des Dokumentenlayouts auf newSize ändert.
Unterklassen von QAbstractTextDocumentLayout sollten dieses Signal ausgeben, wenn sich die gesamte Layoutgröße des Dokuments ä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 angegebenen Rechtecks mit dem angegebenen Text format zu zeichnen.
posInDocument gibt die Position des Objekts innerhalb des Dokuments an.
Die Standard-Implementierung ruft drawObject() bei den Objekt-Handlern auf. Diese Funktion wird nur innerhalb von Qt aufgerufen. Unterklassen können diese Funktion reimplementieren, um das Zeichnen von Inline-Objekten anzupassen.
Siehe auch draw().
[protected]
QTextCharFormat QAbstractTextDocumentLayout::format(int position)
Gibt das Zeichenformat zurück, das für die angegebene position gilt.
QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const
Gibt das Textformat an der angegebenen Position pos zurück.
[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 die angegebene 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, wenn an dieser Stelle kein Bild existiert.
[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 ausgegeben, wenn sich die Anzahl der Seiten im Layout ändert; newPages ist die aktualisierte Seitenzahl.
Unterklassen von QAbstractTextDocumentLayout sollten dieses Signal ausgeben, wenn sich die Anzahl der Seiten im Layout geändert hat. Änderungen der Seitenzahl werden durch Änderungen des Layouts oder des Dokumentinhalts selbst verursacht.
Siehe auch pageCount().
QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const
Gibt das Malgerät zurück, mit dem das Layout des Dokuments gerendert wurde.
Siehe auch setPaintDevice().
[virtual protected]
void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
Legt das Inline-Objekt item mit dem angegebenen Text format aus.
posInDocument gibt die Position des Objekts innerhalb des Dokuments an.
Die Standardimplementierung tut nichts. Diese Funktion wird nur innerhalb von Qt aufgerufen. Unterklassen können diese Funktion reimplementieren, um die Position von Inline-Objekten anzupassen.
Siehe auch drawInlineObject().
void QAbstractTextDocumentLayout::registerHandler(int objectType, QObject *component)
Registriert das angegebene component als Handler für Objekte des angegebenen objectType.
Hinweis: registerHandler() muss für jeden Objekttyp einmal aufgerufen werden. Dies bedeutet, dass es nur einen Handler für mehrere Ersetzungszeichen desselben Objekttyps gibt.
Das Textdokument-Layout übernimmt nicht das Eigentum an component
.
[virtual protected]
void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
Legt die Größe des Inline-Objekts item entsprechend dem Text format fest.
posInDocument gibt die Position des Objekts innerhalb des Dokuments an.
Die Standardimplementierung passt die Größe von item an die Größe an, die von der Funktion intrinsicSize() des Object Handlers zurückgegeben wird. Diese Funktion wird nur innerhalb von Qt aufgerufen. Unterklassen können diese Funktion reimplementieren, um die Größenänderung von Inline-Objekten anzupassen.
void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)
Setzt das Malgerät, das für die Darstellung des Dokumentlayouts verwendet wird, auf die 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 eines beliebigen Handlers, wenn component nicht angegeben ist.
[signal]
void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
Dieses Signal wird ausgesendet, wenn das Rechteck rect aktualisiert wurde.
Unterklassen von QAbstractTextDocumentLayout sollten dieses Signal ausgeben, wenn sich das Layout des Inhalts ändert, um es neu zu malen.
[signal]
void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)
Dieses Signal wird ausgesendet, wenn die angegebene block aktualisiert wurde.
Unterklassen von QAbstractTextDocumentLayout sollten dieses Signal ausgeben, wenn sich das Layout von block geändert hat, um es neu zu malen.
© 2025 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.