Sur cette page

QQmlParserStatus Class

La classe QQmlParserStatus fournit des mises à jour sur l'état de l'analyseur QML. Plus d'informations...

En-tête : #include <QQmlParserStatus>
CMake : find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake : QT += qml
Inherited By :

QQuickItem

Fonctions publiques

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

Description détaillée

QQmlParserStatus fournit un mécanisme permettant aux classes instanciées par QQmlEngine de recevoir des notifications à des moments clés de leur création.

Cette classe est souvent utilisée à des fins d'optimisation, car elle permet de différer une opération coûteuse jusqu'à ce que toutes les propriétés d'un objet aient été définies. Par exemple, l'élément Text de QML utilise le statut de l'analyseur pour différer la mise en page du texte jusqu'à ce que toutes ses propriétés aient été définies (nous ne voulons pas mettre en page lorsque l'élément text est assigné, puis relayer lorsque l'élément font est assigné, et relayer à nouveau lorsque l'élément width est assigné, et ainsi de suite).

Sachez que les méthodes QQmlParserStatus ne sont appelées que lorsqu'une classe est instanciée par un QQmlEngine. Si vous créez la même classe directement à partir de C++, ces méthodes ne seront pas appelées automatiquement. Pour éviter ce problème, il est recommandé de commencer à différer les opérations à partir de classBegin plutôt qu'à partir de la création initiale de votre classe. Cela permettra d'éviter les réévaluations multiples lors de l'affectation initiale de la liaison en QML, mais ne différera pas les opérations invoquées à partir de C++.

Pour utiliser QQmlParserStatus, vous devez hériter à la fois d'une classe dérivée de QObject et de QQmlParserStatus, et utiliser 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;
};

Documentation des fonctions membres

[pure virtual] void QQmlParserStatus::classBegin()

Invoquée après la création de la classe, mais avant qu'aucune propriété n'ait été définie.

[pure virtual] void QQmlParserStatus::componentComplete()

Invoqué après que le composant racine à l'origine de cette instanciation a terminé sa construction. À ce stade, toutes les valeurs statiques et les valeurs de liaison ont été attribuées à la classe.

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