Das QML-Typensystem
Die Typen, die bei der Definition einer Objekthierarchie in einem QML-Dokument verwendet werden können, können aus verschiedenen Quellen stammen. Dabei kann es sich handeln um:
- nativ von der QML-Sprache bereitgestellt
- über C++ von QML-Modulen registriert
- als QML-Dokumente von QML-Modulen bereitgestellt
Darüber hinaus können Anwendungsentwickler eigene Typen bereitstellen, entweder durch direkte Registrierung von C++-Typen oder durch Definition wiederverwendbarer Komponenten in QML-Dokumenten, die anschließend importiert werden können.
Unabhängig davon, woher die Typdefinitionen stammen, gewährleistet die Engine die Typsicherheit für Eigenschaften und Instanzen dieser Typen.
QML-Objekttypen
Ein QML-Objekttyp ist ein Typ, aus dem ein QML-Objekt instanziiert werden kann. QML-Objekttypen leiten sich von ` QtObject` ab und werden von QML-Modulen bereitgestellt. Anwendungen können diese Module importieren, um die darin enthaltenen Objekttypen zu nutzen. Das Modul ` QtQuick ` stellt die gängigsten Objekttypen bereit, die zum Erstellen von Benutzeroberflächen in QML benötigt werden.
Schließlich definiert jedes QML-Dokument implizit einen QML-Objekttyp, der in anderen QML-Dokumenten wiederverwendet werden kann. Ausführliche Informationen zu Objekttypen finden Sie in der Dokumentation zu Objekttypen im QML-Typsystem.
QML-Werttypen
Die Sprache QML bietet integrierte Unterstützung für verschiedene primitive Typen, darunter Ganzzahlen, Gleitkommazahlen mit doppelter Genauigkeit, Zeichenketten und boolesche Werte. Objekte können Eigenschaften dieser Typen besitzen, und Werte dieser Typen können als Argumente an Methoden von Objekten übergeben werden.
Weitere Informationen zu Werttypen finden Sie in der Dokumentation zu QML-Werttypen.
QML-Sequenztypen
Sequenztypen können verwendet werden, um Folgen von Werten oder Objekten zu speichern.
Ausführliche Informationen zu Sequenztypen finden Sie in der Dokumentation zu Sequenztypen im QML-Typsystem.
Aufzählungen
Aufzählungen werden in QML als spezielle Eigenschaften von Typen behandelt.
Ausführliche Informationen zu Aufzählungen finden Sie in der Dokumentation zu QML-Aufzählungen.
Singleton-Typen
QML unterstützt Singleton-Typen, mit denen sich ein Typ definieren lässt, von dem in jeder QML-Engine nur eine Instanz existiert. Singleton-Typen sind nützlich, um anwendungsweite Zustände oder Funktionen bereitzustellen.
Weitere Details finden Sie unter „Singletons in QML “.
Angehängte Typen
Anhängige Eigenschaften und Signal-Handler ermöglichen es Typen, zusätzliche Eigenschaften und Signale bereitzustellen, die an andere Objekte angehängt werden können. Dies ist ein leistungsstarker Mechanismus, um QML-Objekten kontextbezogene Informationen hinzuzufügen.
Weitere Informationen finden Sie unter „Angehängte Typen in QML “.
QML-Namespaces
QML-Namespaces können verwendet werden, um Aufzählungen aus C++-Namespaces verfügbar zu machen.
Ausführliche Informationen zu Namespaces finden Sie in der Dokumentation zum QML-Typsystem.
JavaScript-Typen
JavaScript-Objekte und -Arrays werden von der QML-Engine unterstützt. Jeder Standard-JavaScript-Typ kann mithilfe des generischen Typs „ var “ erstellt und gespeichert werden.
Beispielsweise stehen die Standardtypen „ Date “ und „ Array “ wie folgt zur Verfügung:
import QtQuick
Item {
property var theArray: []
property var theDate: new Date()
Component.onCompleted: {
for (var i = 0; i < 10; i++)
theArray.push("Item " + i)
console.log("There are", theArray.length, "items in the array")
console.log("The time is", theDate.toUTCString())
}
}Weitere Details finden Sie unter „JavaScript-Ausdrücke in QML-Dokumenten “.
C++-Integration
Datentypkonvertierung zwischen QML und C++
Bei der Integration von QML in C++ müssen häufig Daten zwischen den beiden Umgebungen übertragen werden. Die QML-Engine bietet eine automatische Konvertierung zwischen QML- und C++-Typen für gängige Datentypen, während benutzerdefinierte Typen explizit registriert werden müssen.
Weitere Details finden Sie unter „Datentypkonvertierung zwischen QML und C++ “.
Interaktion mit QML-Objekten aus C++
C++-Code kann auf QML-Objekte zugreifen und diese bearbeiten, indem er Referenzen auf diese Objekte von der QML-Engine abruft. Auf diese Weise kann C++-Code Eigenschaften lesen und schreiben, Methoden aufrufen und sich mit Signalen von QML-Objekten verbinden.
Weitere Informationen finden Sie unter Interaktion mit QML-Objekten aus C++.
Integration mit JavaScript-Werten aus C++
Die QML-Engine stellt JavaScript-Werte mithilfe von „ QJSValue “ und zugehörigen Klassen dar, wodurch C++-Code mit JavaScript-Objekten, Funktionen und primitiven Werten arbeiten kann. Dies ermöglicht eine nahtlose Integration zwischen C++- und JavaScript-Code.
Weitere Informationen finden Sie unter „Integration von JavaScript-Werten aus C++ “.
Einbettung von C++-Objekten in QML mit Kontexteigenschaften
Kontexteigenschaften sollten vermieden werden. Weitere Informationen finden Sie unter „Einbetten von C++-Objekten in QML mit Kontexteigenschaften “.
© 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.