QML-Objekttypen
Ein QML-Objekttyp ist ein Typ, aus dem ein QML-Objekt instanziiert werden kann.
Syntaktisch gesehen ist ein QML-Objekttyp ein Typ, mit dem ein Objekt deklariert werden kann, indem der Typname gefolgt von geschweiften Klammern angegeben wird, die die Attribute dieses Objekts umfassen. Dies unterscheidet sich von Werttypen, die nicht auf dieselbe Weise verwendet werden können. Beispielsweise ist „ Rectangle “ ein QML-Objekttyp: Er kann verwendet werden, um Objekte vom Typ „ Rectangle “ zu erstellen. Dies ist mit primitiven Typen wie „ int “ und „ bool “ nicht möglich, da diese dazu dienen, einfache Datentypen statt Objekte zu speichern.
Benutzerdefinierte QML-Objekttypen können definiert werden, indem eine .qml-Datei erstellt wird, die den Typ definiert (wie unter „Dokumente als QML-Objekttypdefinitionen“ beschrieben), oder indem ein QML-Typ aus C++ definiert und der Typ bei der QML-Engine registriert wird (wie unter „Definition von QML-Typen aus C++“ beschrieben). Beachten Sie, dass der Typname in beiden Fällen mit einem Großbuchstaben beginnen muss, damit er in einer QML-Datei als QML-Objekttyp deklariert werden kann.
Weitere Informationen zu C++ und den verschiedenen Methoden zur QML-Integration finden Sie auf der Übersichtsseite zur C++- und QML-Integration.
Es gibt zwei integrierte Objekttypen, die ohne Import weiterer Module verwendet werden können: „ QtObject “ ist der Basistyp aller Objekttypen. „ Component “ kann verwendet werden, um neue Objekttypen inline in QML-Dokumenten zu definieren.
Objekttypen über QML definieren
Definition von Objekttypen über QML-Dokumente
Plugin-Entwickler und Anwendungsentwickler können Typen bereitstellen, die als QML-Dokumente definiert sind. Ein QML-Dokument definiert, sofern es für das QML-Import-System sichtbar ist, einen Typ, der durch den Dateinamen ohne Dateiendung identifiziert wird.
Wenn also ein QML-Dokument mit dem Namen „MyButton.qml“ existiert, stellt es die Definition des Typs „MyButton“ bereit, der in einer QML-Anwendung verwendet werden kann.
Informationen zur Definition eines QML-Dokuments sowie zur Syntax der QML-Sprache finden Sie in der Dokumentation zu QML-Dokumenten. Sobald Sie mit der QML-Sprache und der Definition von QML-Dokumenten vertraut sind, lesen Sie die Dokumentation, in der erläutert wird, wie Sie Ihre eigenen wiederverwendbaren QML-Typen in QML-Dokumenten definieren und verwenden können.
Weitere Informationen finden Sie unter „Definieren von Objekttypen über QML-Dokumente “.
Anonyme Typen mit der Komponente „Component“ definieren
Eine weitere Methode zur Erstellung von Objekttypen innerhalb von QML ist die Verwendung des Typs „ Component “. Damit lässt sich ein Typ direkt in einem QML-Dokument definieren, anstatt ein separates Dokument in einer „ .qml “-Datei zu verwenden.
Item {
id: root
width: 500; height: 500
Component {
id: myComponent
Rectangle { width: 100; height: 100; color: "red" }
}
Component.onCompleted: {
myComponent.createObject(root)
myComponent.createObject(root, {"x": 200})
}
}Hier definiert das „ myComponent “-Objekt im Wesentlichen einen anonymen Typ, der mithilfe von „ Component::createObject “ instanziiert werden kann, um Objekte dieses anonymen Typs zu erstellen.
Inline-Komponenten weisen alle Eigenschaften regulärer Komponenten der obersten Ebene auf und verwenden dieselbe „ import “-Liste wie das sie enthaltende QML-Dokument.
Beachten Sie, dass jede Deklaration eines „ Component “-Objekts einen eigenen Komponentenbereich erstellt. Alle ID-Werte, die innerhalb einer „ Component “-Objektdeklaration verwendet und referenziert werden, müssen innerhalb dieses Bereichs eindeutig sein, müssen jedoch nicht innerhalb des Dokuments, in dem die Inline-Komponente deklariert ist, eindeutig sein. So könnte die in der Objektdeklaration „ myComponent “ deklarierte „ Rectangle “ die ID „ root “ haben, ohne mit der für das Objekt „ Item “ im selben Dokument deklarierten „ root “ in Konflikt zu geraten, da diese beiden ID-Werte innerhalb unterschiedlicher Komponentenbereiche deklariert sind.
Weitere Informationen finden Sie unter „Gültigkeitsbereich und Namensauflösung “.
Definition von Objekttypen aus C++
Entwickler von C++-Plugins und Anwendungsentwickler können in C++ definierte Typen über die vom Modul „ Qt Qml “ bereitgestellte API registrieren. Es gibt verschiedene Registrierungsfunktionen, die jeweils unterschiedliche Anwendungsfälle abdecken. Weitere Informationen zu diesen Registrierungsfunktionen sowie zu den Besonderheiten der Bereitstellung benutzerdefinierter C++-Typen für QML finden Sie in der Dokumentation zum Thema „Definieren von QML-Typen aus C++“.
Das QML-Typsystem setzt voraus, dass Importe, Plugins und Erweiterungen in einem bekannten Importpfad installiert sind. Plugins können von Drittentwicklern bereitgestellt und von Entwicklern von Client-Anwendungen wiederverwendet werden. Weitere Informationen zum Erstellen und Bereitstellen eines QML-Erweiterungsmoduls finden Sie in der Dokumentation zu QML-Modulen.
© 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.