QQmlParserStatus Class
Die Klasse „QQmlParserStatus“ liefert aktuelle Informationen zum Status des QML-Parsers. Mehr...
| Überschrift: | #include <QQmlParserStatus> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
| Vererbt an: |
Öffentliche Funktionen
| virtual void | classBegin() = 0 |
| virtual void | componentComplete() = 0 |
Ausführliche Beschreibung
QQmlParserStatus bietet einen Mechanismus für Klassen, die von einem „ QQmlEngine “ instanziiert werden, um an wichtigen Punkten ihrer Erstellung Benachrichtigungen zu erhalten.
Diese Klasse wird häufig zu Optimierungszwecken verwendet, da sie es ermöglicht, eine rechenintensive Operation aufzuschieben, bis alle Eigenschaften eines Objekts festgelegt wurden. Beispielsweise nutzt das QML-Element „ Text “ den Parser-Status, um das Textlayout aufzuschieben, bis alle seine Eigenschaften gesetzt wurden (wir möchten nicht, dass das Layout erstellt wird, wenn „ text “ zugewiesen wird, dann erneut, wenn „ font “ zugewiesen wird, und noch einmal, wenn „ width “ zugewiesen wird, und so weiter).
Beachten Sie, dass die Methoden von `QQmlParserStatus` nur aufgerufen werden, wenn eine Klasse von einem ` QQmlEngine` instanziiert wird. Wenn Sie dieselbe Klasse direkt aus C++ erstellen, werden diese Methoden nicht automatisch aufgerufen. Um dieses Problem zu vermeiden, wird empfohlen, Operationen erst ab „ classBegin “ aufzuschieben und nicht bereits bei der anfänglichen Erstellung Ihrer Klasse. Dadurch werden zwar weiterhin Mehrfachberechnungen während der anfänglichen Bindungszuweisung in QML verhindert, aber aus C++ aufgerufene Operationen werden nicht aufgeschoben.
Um `QQmlParserStatus` zu verwenden, müssen Sie sowohl von einer von ` QObject` abgeleiteten Klasse als auch von `QQmlParserStatus` erben und das Makro ` Q_INTERFACES()` verwenden.
class MyObject : public QObject, public QQmlParserStatus
{
Q_OBJECT
Q_INTERFACES(QQmlParserStatus)
public:
MyObject(QObject *parent = nullptr);
// ...
void classBegin() override;
void componentComplete() override;
};Dokumentation zu den Mitgliedsfunktionen
[pure virtual] void QQmlParserStatus::classBegin()
Wird nach der Erstellung der Klasse aufgerufen, jedoch bevor Eigenschaften festgelegt wurden.
[pure virtual] void QQmlParserStatus::componentComplete()
Wird aufgerufen, nachdem die Root-Komponente, die diese Instanziierung ausgelöst hat, vollständig erstellt wurde. Zu diesem Zeitpunkt wurden der Klasse bereits alle statischen Werte und Bindungswerte zugewiesen.
© 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.