QTextObjectInterface Class
Die Klasse QTextObjectInterface ermöglicht das Zeichnen von benutzerdefinierten Textobjekten in QTextDocuments. Mehr...
Kopfzeile: | #include <QTextObjectInterface> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Öffentliche Funktionen
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 |
Detaillierte Beschreibung
Ein Textobjekt beschreibt die Struktur eines oder mehrerer Elemente in einem Textdokument. So werden z.B. aus HTML importierte Bilder durch Textobjekte implementiert. Ein Textobjekt weiß, wie es seine Elemente anordnen und zeichnen muss, wenn ein Dokument gerendert wird.
Qt erlaubt das Einfügen von benutzerdefinierten Textobjekten in ein Dokument, indem ein benutzerdefiniertes object type mit QTextCharFormat registriert wird. Ein QTextObjectInterface muss auch für diesen Typ implementiert werden und registered mit dem QAbstractTextDocumentLayout des Dokuments sein. Wenn der Objekttyp beim Rendern eines QTextDocument angetroffen wird, werden die Funktionen intrinsicSize() und drawObject() der Schnittstelle aufgerufen.
Die folgende Liste erläutert die erforderlichen Schritte zum Einfügen eines benutzerdefinierten Textobjekts in ein Dokument:
- Wählen Sie ein objectType. objectType ist eine Ganzzahl mit einem Wert größer oder gleich QTextFormat::UserObject.
- Erstellen Sie ein QTextCharFormat Objekt und setzen Sie den Objekttyp mit der Funktion setObjectType() auf den gewählten Typ.
- Implementieren Sie die Klasse QTextObjectInterface.
- Rufen Sie QAbstractTextDocumentLayout::registerHandler() mit einer Instanz Ihrer QTextObjectInterface-Unterklasse auf, um Ihren Objekttyp zu registrieren.
- Fügen Sie QChar::ObjectReplacementCharacter mit der oben erwähnten QTextCharFormat des gewählten Objekttyps in das Dokument ein. Wie bereits erwähnt, werden dann die Funktionen von QTextObjectInterface intrinsicSize() und drawObject() mit QTextFormat als Parameter aufgerufen, sobald das Ersetzungszeichen auftritt.
Eine Klasse, die ein Textobjekt implementiert, muss sowohl QObject als auch QTextObjectInterface erben. QObject muss die erste geerbte Klasse sein. Ein Beispiel:
class SvgTextObject : public QObject, public QTextObjectInterface { Q_OBJECT Q_INTERFACES(QTextObjectInterface)
Die Daten eines Textobjekts werden normalerweise mit QTextCharFormat::setProperty() in QTextCharFormat gespeichert und dann mit QTextCharFormat::property() abgerufen.
Warnung: Die Operationen Kopieren und Einfügen ignorieren benutzerdefinierte Textobjekte.
Siehe auch QTextCharFormat und QTextLayout.
Dokumentation der Mitgliedsfunktionen
[virtual noexcept]
QTextObjectInterface::~QTextObjectInterface()
Zerstört diese QTextObjectInterface.
[pure virtual]
void QTextObjectInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)
Zeichnet dieses Textobjekt unter Verwendung des angegebenen painter.
Die Größe des Rechtecks, rect, in das gezeichnet werden soll, ist die Größe, die zuvor mit intrinsicSize() berechnet wurde. Die Position des Rechtecks ist relativ zu painter.
Sie erhalten auch das Dokument (doc) und die Position (posInDocument) des format in diesem Dokument.
Siehe auch intrinsicSize().
[pure virtual]
QSizeF QTextObjectInterface::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format)
Die Funktion intrinsicSize() gibt die Größe des durch format dargestellten Textobjekts in dem angegebenen Dokument (doc) an der angegebenen Position (posInDocument) zurück.
Die berechnete Größe wird bei nachfolgenden Aufrufen von drawObject() für dieses format verwendet.
Siehe auch drawObject().
© 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.