En esta página

QQmlParserStatus Class

La clase QQmlParserStatus proporciona actualizaciones sobre el estado del analizador QML. Más...

Cabecera: #include <QQmlParserStatus>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
Heredado Por:

QQuickItem

Funciones Públicas

virtual void classBegin() = 0
virtual void componentComplete() = 0

Descripción detallada

QQmlParserStatus proporciona un mecanismo para que las clases instanciadas por un QQmlEngine reciban notificaciones en puntos clave de su creación.

Esta clase se utiliza a menudo con fines de optimización, ya que permite aplazar una operación costosa hasta que se hayan establecido todas las propiedades de un objeto. Por ejemplo, el elemento Text de QML utiliza el estado del analizador sintáctico para aplazar la maquetación del texto hasta que se hayan establecido todas sus propiedades (no queremos maquetar cuando se asigne el text, y luego retransmitir cuando se asigne el font, y retransmitir de nuevo cuando se asigne el width, y así sucesivamente).

Ten en cuenta que los métodos QQmlParserStatus sólo son llamados cuando una clase es instanciada por un QQmlEngine. Si creas la misma clase directamente desde C++, estos métodos no serán llamados automáticamente. Para evitar este problema, se recomienda empezar a diferir operaciones desde classBegin en lugar de desde la creación inicial de su clase. De este modo se seguirán evitando las revaluaciones múltiples durante la asignación inicial de enlaces en QML, pero no se diferirán las operaciones invocadas desde C++.

Para utilizar QQmlParserStatus, debe heredar tanto una clase derivada de QObject como QQmlParserStatus, y utilizar la macro Q_INTERFACES().

class MyObject : public QObject, public QQmlParserStatus
{
    Q_OBJECT
    Q_INTERFACES(QQmlParserStatus)

public:
    MyObject(QObject *parent = nullptr);
    // ...
    void classBegin() override;
    void componentComplete() override;
};

Documentación de las funciones miembro

[pure virtual] void QQmlParserStatus::classBegin()

Se invoca después de la creación de la clase, pero antes de que se haya establecido ninguna propiedad.

[pure virtual] void QQmlParserStatus::componentComplete()

Invocada después de que el componente raíz que causó esta instanciación haya completado la construcción. En este punto, todos los valores estáticos y vinculantes se han asignado a la clase.

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