En esta página

QAbstractTextDocumentLayout Class

La clase QAbstractTextDocumentLayout es una clase base abstracta utilizada para implementar diseños personalizados para QTextDocuments. Más...

Cabecera: #include <QAbstractTextDocumentLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Hereda: QObject
Heredado por:

QPlainTextDocumentLayout

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

struct PaintContext
struct Selection

Funciones Públicas

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)

Señales

void documentSizeChanged(const QSizeF &newSize)
void pageCountChanged(int newPages)
void update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
void updateBlock(const QTextBlock &block)

Funciones Protegidas

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)

Descripción detallada

El layout estándar proporcionado por Qt puede manejar procesadores de texto simples, incluyendo imágenes en línea, listas y tablas.

Algunas aplicaciones, por ejemplo, un procesador de textos o una aplicación DTP pueden necesitar más características que las proporcionadas por el motor de diseño de Qt, en cuyo caso puede subclasificar QAbstractTextDocumentLayout para proporcionar un comportamiento de diseño personalizado para sus documentos de texto.

Una instancia de la subclase QAbstractTextDocumentLayout puede ser instalada en un objeto QTextDocument con la función setDocumentLayout().

Puede insertar objetos personalizados en un objeto QTextDocument; consulte la descripción de la clase QTextObjectInterface para más detalles.

Véase también QTextObjectInterface.

Documentación de funciones miembro

[explicit] QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)

Crea un nuevo diseño de documento de texto para la dirección document.

QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const

Devuelve la referencia del ancla el position dado , o una cadena vacía si no existe ancla en ese punto.

[pure virtual] QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const

Devuelve el rectángulo delimitador de block.

QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const

Devuelve el bloque (probablemente un elemento de lista) cuyo marker se encuentra en la posición dada pos.

QTextDocument *QAbstractTextDocumentLayout::document() const

Devuelve el documento de texto sobre el que opera este diseño.

[pure virtual protected] void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)

Esta función es llamada cada vez que cambia el contenido del documento. Un cambio se produce cuando se inserta o elimina texto, o una combinación de ambos. El cambio se especifica mediante position, charsRemoved, y charsAdded correspondientes a la posición del carácter inicial del cambio, el número de caracteres eliminados del documento y el número de caracteres añadidos.

Por ejemplo, al insertar el texto "Hola" en un documento vacío, charsRemoved sería 0 y charsAdded sería 5 (la longitud de la cadena).

La sustitución de texto es una combinación de eliminación e inserción. Por ejemplo, si el texto "Hola" se sustituye por "Hola", charsRemoved sería 5 y charsAdded sería 2.

Para las subclases de QAbstractTextDocumentLayout, ésta es la función central en la que se realiza gran parte del trabajo de disposición y posicionamiento de los contenidos del documento.

Por ejemplo, en una subclase que sólo ordena bloques de texto, una implementación de esta función tendría que hacer lo siguiente:

  • Determinar la lista de QTextBlock(s) modificados utilizando los parámetros proporcionados.
  • Es necesario procesar el objeto QTextLayout correspondiente a cada objeto QTextBlock. Se puede acceder al QTextBlock's layout utilizando la función QTextBlock::layout(). Este procesamiento debe tener en cuenta el tamaño de página del documento.
  • Si el número total de páginas cambia, se emite la señal pageCountChanged().
  • Si se modifica el tamaño total, se emite la señal documentSizeChanged().
  • La señal update() debe emitirse para programar el repintado de las áreas de la maqueta que lo requieran.

Véase también QTextLayout.

[pure virtual] QSizeF QAbstractTextDocumentLayout::documentSize() const

Devuelve el tamaño total del diseño del documento.

Esta información puede ser utilizada por los widgets de visualización para actualizar correctamente sus barras de desplazamiento.

Véase también documentSizeChanged() y QTextDocument::pageSize.

[signal] void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)

Esta señal se emite cuando el tamaño del diseño del documento cambia a newSize.

Las subclases de QAbstractTextDocumentLayout deben emitir esta señal cuando cambia el tamaño de toda la presentación del documento. Esta señal es útil para los widgets que muestran documentos de texto, ya que les permite actualizar correctamente sus barras de desplazamiento.

Véase también documentSize().

[pure virtual] void QAbstractTextDocumentLayout::draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context)

Dibuja el diseño con la dirección painter utilizando la dirección context.

[virtual protected] void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)

Esta función es llamada para dibujar el objeto en línea, object, con el painter dado dentro del rectángulo especificado por rect usando el texto especificado format.

posInDocument especifica la posición del objeto dentro del documento.

La implementación por defecto llama a drawObject() en los manejadores de objetos. Esta función sólo se llama dentro de Qt. Las subclases pueden reimplementar esta función para personalizar el dibujo de objetos en línea.

Véase también draw().

[protected] QTextCharFormat QAbstractTextDocumentLayout::format(int position)

Devuelve el formato de caracteres aplicable en la dirección position.

QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const

Devuelve el formato de texto en la posición dada pos.

[pure virtual] QRectF QAbstractTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const

Devuelve el rectángulo delimitador de frame.

QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectType) const

Devuelve un controlador para los objetos de la dirección objectType.

[pure virtual] int QAbstractTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const

Devuelve la posición del cursor para el point dado con el accuracy especificado. Devuelve -1 si no se ha encontrado una posición válida del cursor.

QString QAbstractTextDocumentLayout::imageAt(const QPointF &pos) const

Devuelve el origen de la imagen en la posición dada pos, o una cadena vacía si no existe ninguna imagen en ese punto.

[pure virtual] int QAbstractTextDocumentLayout::pageCount() const

Devuelve el número de páginas que contiene la maqueta.

Véase también pageCountChanged().

[signal] void QAbstractTextDocumentLayout::pageCountChanged(int newPages)

Esta señal se emite cuando cambia el número de páginas de la maqueta; newPages es el número de páginas actualizado.

Las subclases de QAbstractTextDocumentLayout deben emitir esta señal cuando cambia el número de páginas de la maqueta. Los cambios en el número de páginas se deben a cambios en la maquetación o en el propio contenido del documento.

Véase también pageCount().

QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const

Devuelve el dispositivo de pintura utilizado para renderizar el diseño del documento.

Véase también setPaintDevice().

[virtual protected] void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

Presenta el objeto en línea item utilizando el texto dado format.

posInDocument especifica la posición del objeto dentro del documento.

La implementación por defecto no hace nada. Esta función sólo se ejecuta dentro de Qt. Las subclases pueden reimplementar esta función para personalizar la posición de los objetos en línea.

Véase también drawInlineObject().

void QAbstractTextDocumentLayout::registerHandler(int objectType, QObject *component)

Registra el component dado como manejador de elementos del objectType dado.

Nota: registerHandler() debe llamarse una vez para cada tipo de objeto. Esto significa que sólo hay un manejador para múltiples caracteres de sustitución del mismo tipo de objeto.

El diseño del documento de texto no se apropia de component.

[virtual protected] void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

Establece el tamaño del objeto en línea item correspondiente al texto format.

posInDocument especifica la posición del objeto dentro del documento.

La implementación por defecto redimensiona el item al tamaño devuelto por la función intrinsicSize() del manejador de objetos. Esta función sólo se ejecuta dentro de Qt. Las subclases pueden reimplementar esta función para personalizar el cambio de tamaño de los objetos en línea.

void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)

Establece el dispositivo de pintura utilizado para renderizar el diseño del documento en la dirección device.

Véase también paintDevice().

void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)

Anula el registro de component como gestor de elementos de objectType, o de cualquier gestor si no se especifica component.

[signal] void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))

Esta señal se emite cuando el rectángulo rect ha sido actualizado.

Las subclases de QAbstractTextDocumentLayout deben emitir esta señal cuando cambie la disposición de los contenidos para repintar.

[signal] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)

Esta señal se emite cuando el block especificado ha sido actualizado.

Las subclases de QAbstractTextDocumentLayout deben emitir esta señal cuando el diseño de block haya cambiado para poder repintar.

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