QTextObjectInterface Class
La clase QTextObjectInterface permite dibujar objetos de texto personalizados en QTextDocuments. Más...
| Cabecera: | #include <QTextObjectInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Funciones públicas
| 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 |
Descripción detallada
Un objeto de texto describe la estructura de uno o más elementos en un documento de texto; por ejemplo, las imágenes importadas de HTML se implementan utilizando objetos de texto. Un objeto de texto sabe cómo disponer y dibujar sus elementos cuando se está renderizando un documento.
Qt permite insertar objetos de texto personalizados en un documento registrando un object type personalizado con QTextCharFormat. Una QTextObjectInterface también debe ser implementada para este tipo y ser registered con el QAbstractTextDocumentLayout del documento. Cuando se encuentra el tipo de objeto al renderizar un QTextDocument, se llama a las funciones intrinsicSize() y drawObject() de la interfaz.
La siguiente lista explica los pasos necesarios para insertar un objeto de texto personalizado en un documento:
- Elija un objeto objectType. El objectType es un número entero con un valor mayor o igual a QTextFormat::UserObject.
- Crear un objeto QTextCharFormat y establecer el tipo de objeto al tipo elegido mediante la función setObjectType().
- Implementar la clase QTextObjectInterface.
- Llame a QAbstractTextDocumentLayout::registerHandler() con una instancia de su subclase QTextObjectInterface para registrar su tipo de objeto.
- Inserta QChar::ObjectReplacementCharacter con la mencionada QTextCharFormat del tipo de objeto elegido en el documento. Como se ha mencionado, las funciones de QTextObjectInterface intrinsicSize() y drawObject() serán entonces llamadas con el QTextFormat como parámetro cada vez que se encuentre el caracter de reemplazo.
Una clase que implemente un objeto de texto necesita heredar tanto QObject como QTextObjectInterface. QObject debe ser la primera clase heredada. Por ejemplo:
class SvgTextObject : public QObject, public QTextObjectInterface { Q_OBJECT Q_INTERFACES(QTextObjectInterface)
Los datos de un objeto de texto normalmente se almacenan en QTextCharFormat utilizando QTextCharFormat::setProperty(), y luego se recuperan con QTextCharFormat::property().
Advertencia: Las operaciones de copiar y pegar ignoran los objetos de texto personalizados.
Véase también QTextCharFormat y QTextLayout.
Documentación de las funciones miembro
[virtual noexcept] QTextObjectInterface::~QTextObjectInterface()
Destruye este QTextObjectInterface.
[pure virtual] void QTextObjectInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)
Dibuja este objeto de texto utilizando el painter especificado.
El tamaño del rectángulo, rect, a dibujar es el calculado previamente por intrinsicSize(). La posición del rectángulo es relativa a painter.
También se obtiene el documento (doc) y la posición (posInDocument) del format en ese documento.
Véase también intrinsicSize().
[pure virtual] QSizeF QTextObjectInterface::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format)
La función intrinsicSize() devuelve el tamaño del objeto de texto representado por format en el documento dado (doc) en la posición dada (posInDocument).
El tamaño calculado se utilizará en posteriores llamadas a drawObject() para este format.
Véase también 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.