Wichtige C++-Klassen, die vom Modul Qt Qml bereitgestellt werden

Das Qt Qml Modul bietet C++-Klassen, die das QML-Framework implementieren. Clients können diese Klassen verwenden, um mit der QML-Laufzeit zu interagieren (z. B. durch Injizieren von Daten oder Aufrufen von Methoden für Objekte) und um eine Hierarchie von Objekten aus einem QML-Dokument zu instanziieren. Das Modul Qt Qml bietet mehr C++-API als nur die hier aufgeführten Klassen. Die hier aufgeführten Klassen bilden jedoch die Grundlage für die QML Runtime und die Kernkonzepte von QML.

QML Runtime

Eine typische QML-Anwendung mit einem C++-Einstiegspunkt instanziiert ein QQmlEngine und verwendet dann ein QQmlComponent, um ein QML-Dokument zu laden. Die Engine stellt einen Standard QQmlContext zur Verfügung, der als Top-Level-Evaluierungskontext für die Evaluierung der im QML-Dokument definierten Funktionen und Ausdrücke verwendet wird. Die im QML-Dokument definierte Objekthierarchie wird durch Aufruf der Funktion create() der Instanz QQmlComponent instanziiert, vorausgesetzt, dass beim Laden des Dokuments keine Fehler aufgetreten sind.

Der Client kann die von der Engine bereitgestellte QQmlContext ändern, indem er Eigenschaften oder Objekte in den Kontext einfügt. Er kann die Funktion QQmlEngine::rootContext() aufrufen, um auf den Top-Level-Kontext zuzugreifen.

Nach der Instanziierung des Objekts übergibt der Client in der Regel die Kontrolle an die Ereignisschleife der Anwendung, so dass Benutzereingabeereignisse (z. B. Mausklicks) geliefert und von der Anwendung verarbeitet werden können.

Hinweis: Das Modul Qt Quick bietet eine Komfortklasse, QQuickView, die eine QML Runtime und ein visuelles Fenster für die Anzeige einer QML-Anwendung bereitstellt.

Die QQmlEngine-Klasse

Die Klasse QQmlEngine bietet eine Engine, die eine in einem QML-Dokument definierte Hierarchie von Objekten verwalten kann. Sie stellt einen QML-Wurzelkontext bereit, in dem Ausdrücke ausgewertet werden, und stellt sicher, dass die Eigenschaften von Objekten bei Bedarf korrekt aktualisiert werden.

Eine QQmlEngine ermöglicht die Konfiguration globaler Einstellungen, die für alle von ihr verwalteten Objekte gelten, z. B. die für die Netzwerkkommunikation zu verwendende QNetworkAccessManager und den für die dauerhafte Speicherung zu verwendenden Dateipfad.

In der Dokumentation der Klasse QQmlEngine finden Sie ausführliche Informationen darüber, was die Klasse QQmlEngine bietet und wie sie in einer Anwendung verwendet werden kann.

Die Klasse QQmlContext

Die Klasse QQmlContext bietet einen Kontext für die Instanziierung von Objekten und die Auswertung von Ausdrücken. Alle Objekte werden in einem bestimmten Kontext instanziert, und alle Ausdrücke, die während der Ausführung einer Anwendung ausgewertet werden, werden in einem bestimmten Kontext ausgewertet. Dieser Kontext legt fest, wie Symbole aufgelöst werden, und damit, auf welche Werte der Ausdruck wirkt.

In der Klassendokumentation QQmlContext finden Sie ausführliche Informationen darüber, wie Sie den Auswertungskontext eines Objekts durch Hinzufügen oder Entfernen von Eigenschaften eines QQmlContext ändern können und wie Sie auf den Kontext für ein Objekt zugreifen können.

Dynamische Objektinstanziierung und Ausdrucksauswertung

Dynamische Objektinstanziierung und dynamische Ausdrucksauswertung sind beides Kernkonzepte in QML. QML-Dokumente definieren Objekttypen, die zur Laufzeit unter Verwendung einer QQmlComponent instanziiert werden können. Eine Instanz der Klasse QQmlComponent kann in C++ direkt oder über die Funktion Qt.createComponent() in imperativem QML-Code erzeugt werden. Beliebige Ausdrücke können in C++ über die Klasse QQmlExpression berechnet werden, und solche Ausdrücke können direkt mit dem QML-Kontext interagieren.

Die Klasse QQmlComponent

Die Klasse QQmlComponent kann verwendet werden, um ein QML-Dokument zu laden. Sie benötigt eine QQmlEngine, um die Hierarchie der im QML-Dokument definierten Objekte zu instanziieren.

Ausführliche Informationen über die Verwendung von QQmlComponent finden Sie in der Dokumentation der Klasse QQmlComponent.

Die Klasse QQmlExpression

Die Klasse QQmlExpression bietet eine Möglichkeit für Clients, JavaScript-Ausdrücke von C++ aus zu evaluieren, wobei ein bestimmter QML-Evaluierungskontext verwendet wird. Dadurch können Clients auf QML-Objekte z. B. über eine ID zugreifen. Das Ergebnis der Auswertung wird als QVariant zurückgegeben, und die Konvertierungsregeln werden von der QML-Engine definiert.

Ausführliche Informationen über die Verwendung von QQmlExpression in einer Anwendung finden Sie in der Dokumentation der Klasse QQmlExpression.

Verwendung der Klassen in QML-Anwendungen

Auf diesen Seiten wird beschrieben, wie man QML-Anwendungen erstellt, die mit den C++-Klassen interagieren:

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