Auf dieser Seite

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

Das Qt Qml Modul stellt C++-Klassen bereit, die das QML-Framework implementieren. Clients können diese Klassen nutzen, um mit der QML-Laufzeitumgebung zu interagieren (beispielsweise durch das Einfügen von Daten oder das Aufrufen von Methoden an Objekten) und um eine Objekthierarchie aus einem QML-Dokument zu instanziieren. Das Modul „ Qt Qml “ bietet zwar mehr C++-APIs als nur die hier aufgeführten Klassen, doch bilden die hier aufgeführten Klassen die Grundlage der QML Runtime und der Kernkonzepte von QML.

QML Runtime

Eine typische QML-Anwendung mit einem C++-Einstiegspunkt instanziiert ein ` QQmlEngine ` und verwendet anschließend ein ` QQmlComponent `, um ein QML-Dokument zu laden. Die Engine stellt einen Standard-Auswertungskontext ( QQmlContext ) bereit, der als oberster Auswertungskontext für die Auswertung von Funktionen und Ausdrücken dient, die im QML-Dokument definiert sind. Die im QML-Dokument definierte Objekthierarchie wird durch Aufruf der Funktion „ create()“ der Instanz „ QQmlComponent “ instanziiert, vorausgesetzt, beim Laden des Dokuments sind keine Fehler aufgetreten.

Der Client möchte möglicherweise die von der Engine bereitgestellte Instanz ` QQmlContext ` modifizieren, indem er Eigenschaften oder Objekte in den Kontext einfügt. Dazu kann er die Funktion ` QQmlEngine::rootContext()` aufrufen, um auf den obersten Kontext zuzugreifen.

Nach der Instanziierung des Objekts übergibt der Client die Steuerung in der Regel an die Ereignisschleife der Anwendung, damit Benutzereingaben (wie Mausklicks) an die Anwendung übermittelt und von dieser verarbeitet werden können.

Hinweis: Das Modul „ Qt Quick “ stellt eine Komfortklasse namens „ QQuickView “ bereit, die eine QML Runtime und ein visuelles Fenster zur Anzeige einer QML-Anwendung bereitstellt.

Die Klasse `QQmlEngine`

Die Klasse „ QQmlEngine “ stellt eine Engine bereit, die eine in einem QML-Dokument definierte Objekthierarchie verwalten kann. Sie stellt einen übergeordneten QML-Kontext 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; beispielsweise die für die Netzwerkkommunikation zu verwendende ` QNetworkAccessManager ` und den für die dauerhafte Speicherung zu verwendenden Dateipfad.

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

Die Klasse `QQmlContext`

Die Klasse „ QQmlContext “ stellt einen Kontext für die Instanziierung von Objekten und die Auswertung von Ausdrücken bereit. Alle Objekte werden in einem bestimmten Kontext instanziiert, und alle Ausdrücke, die während der Ausführung einer Anwendung ausgewertet werden, werden innerhalb eines bestimmten Kontexts ausgewertet. Dieser Kontext legt fest, wie Symbole aufgelöst werden und somit, mit welchen Werten der Ausdruck arbeitet.

Ausführliche Informationen dazu, wie Sie den Auswertungskontext eines Objekts durch Hinzufügen oder Entfernen von Eigenschaften eines ` QQmlContext` ändern können und wie Sie auf den Kontext eines Objekts zugreifen, finden Sie in der Dokumentation zur Klasse ` QQmlContext `.

Dynamische Objektinstanziierung und Auswert von Ausdrücken

Die dynamische Objektinstanziierung und die dynamische Ausdrucksauswertung sind beides Kernkonzepte in QML. QML-Dokumente definieren Objekttypen, die zur Laufzeit mithilfe eines ` QQmlComponent` instanziiert werden können. Eine Instanz der Klasse ` QQmlComponent ` kann direkt in C++ oder über die Funktion ` Qt.createComponent()` in imperativem QML-Code erstellt 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 zum Laden eines QML-Dokuments verwendet werden. Sie benötigt eine „ QQmlEngine “, um die im QML-Dokument definierte Objekthierarchie zu instanziieren.

Ausführliche Informationen zur Verwendung von ` QQmlComponent` finden Sie in der Dokumentation zur Klasse ` QQmlComponent `.

Die Klasse `QQmlExpression`

Die Klasse „ QQmlExpression “ bietet Clients die Möglichkeit, JavaScript-Ausdrücke aus C++ heraus unter Verwendung eines bestimmten QML-Auswertungskontexts auszuwerten. Dadurch können Clients beispielsweise über die ID auf QML-Objekte zugreifen. Das Ergebnis der Auswertung wird als „ QVariant “ zurückgegeben, wobei die Konvertierungsregeln von der QML-Engine definiert werden.

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

Verwendung der Klassen in QML-Anwendungen

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

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