Auf dieser Seite

QTextObjectInterface Class

Die Klasse „QTextObjectInterface“ ermöglicht das Zeichnen benutzerdefinierter Textobjekte in „ QTextDocuments“. Mehr dazu...

Header: #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

Ausführliche Beschreibung

Ein Textobjekt beschreibt die Struktur eines oder mehrerer Elemente in einem Textdokument; beispielsweise werden aus HTML importierte Bilder mithilfe von Textobjekten implementiert. Ein Textobjekt weiß, wie seine Elemente beim Rendern eines Dokuments angeordnet und gezeichnet werden müssen.

Qt ermöglicht das Einfügen benutzerdefinierter Textobjekte in ein Dokument, indem eine benutzerdefinierte Schnittstelle ` object type ` mit ` QTextCharFormat` registriert wird. Für diesen Typ muss außerdem eine `QTextObjectInterface` implementiert sein, die mit der Schnittstelle ` QAbstractTextDocumentLayout ` des Dokuments ` registered ` ist. Wenn der Objekttyp beim Rendern eines ` QTextDocument` auftritt, 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 einen „ objectType “ aus. Der „ objectType “ ist eine Ganzzahl mit einem Wert größer oder gleich „ QTextFormat::UserObject “.
  • Erstellen Sie ein „ QTextCharFormat “-Objekt und legen Sie den Objekttyp mithilfe der Funktion „setObjectType()“ auf den gewählten Typ fest.
  • 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 dem zuvor erwähnten ` QTextCharFormat ` des gewählten Objekttyps in das Dokument ein. Wie bereits erwähnt, werden die Funktionen von `QTextObjectInterface`, nämlich ` intrinsicSize()` und ` drawObject()`, dann jedes Mal mit dem ` QTextFormat ` als Parameter aufgerufen, wenn das Ersetzungszeichen auftritt.

Eine Klasse, die ein Textobjekt implementiert, muss sowohl von ` QObject ` als auch von `QTextObjectInterface` erben. ` QObject ` muss die erste Klasse sein, von der geerbt wird. Zum Beispiel:

class SvgTextObject : public QObject, public QTextObjectInterface
{
    Q_OBJECT
    Q_INTERFACES(QTextObjectInterface)

Die Daten eines Textobjekts werden in der Regel mithilfe von ` QTextCharFormat::setProperty()` in ` QTextCharFormat ` gespeichert und anschließend mit ` QTextCharFormat::property()` abgerufen.

Warnung: Bei Kopier- und Einfügevorgängen werden benutzerdefinierte Textobjekte ignoriert.

Siehe auch „ QTextCharFormat “ und „ QTextLayout “.

Dokumentation zu Mitgliedsfunktionen

[virtual noexcept] QTextObjectInterface::~QTextObjectInterface()

Löscht diese Seite: 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 zu zeichnenden Rechtecks ( rect) entspricht der zuvor mit intrinsicSize() berechneten Größe. Die Position des Rechtecks ist relativ zum painter.

Außerdem erhalten Sie 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 Textobjekts zurück, das durch ` format ` im angegebenen Dokument (doc) an der angegebenen Position (posInDocument) dargestellt wird.

Die berechnete Größe wird für nachfolgende Aufrufe von ` drawObject()` für dieses ` format` verwendet.

Siehe auch drawObject().

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