QML-Objekttypen

Ein QML-Objekttyp ist ein Typ, von dem ein QML-Objekt instanziiert werden kann.

Syntaktisch gesehen ist ein QML-Objekttyp ein Typ, der zur Deklaration eines Objekts verwendet werden kann, indem der Typname, gefolgt von einer Reihe geschweifter Klammern, die die Attribute des Objekts umfassen, angegeben wird. Dies unterscheidet sich von Wertetypen, die nicht auf dieselbe Weise verwendet werden können. Zum Beispiel ist Rectangle ein QML-Objekttyp: Er kann verwendet werden, um Objekte vom Typ Rectangle zu erstellen. Dies ist nicht möglich mit primitiven Typen wie int und bool, die eher für einfache Datentypen als für Objekte verwendet werden.

Benutzerdefinierte QML-Objekttypen können definiert werden, indem man eine .qml-Datei erstellt, die den Typ definiert, wie in Dokumente als QML-Objekttyp-Definitionen beschrieben, oder indem man einen QML-Typ von C++ aus definiert und den Typ bei der QML-Engine registriert, wie in Definieren von QML-Typen von C++ aus beschrieben. Beachten Sie, dass in beiden Fällen der Typname mit einem Großbuchstaben beginnen muss, damit er als QML-Objekttyp in einer QML-Datei deklariert werden kann.

Weitere Informationen über C++ und die verschiedenen QML-Integrationsmethoden finden Sie auf der Übersichtsseite zur Integration von C++ und QML.

Definieren von Objekttypen aus QML

Definieren von Objekttypen durch QML-Dokumente

Plugin-Autoren und Anwendungsentwickler können Typen bereitstellen, die als QML-Dokumente definiert sind. Ein QML-Dokument, das für das QML-Importsystem sichtbar ist, definiert einen Typ, der durch den Namen der Datei abzüglich der Dateierweiterungen 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 und zur Syntax der QML-Sprache finden Sie in der Dokumentation zu QML-Dokumenten. Wenn Sie mit der QML-Sprache und der Definition von QML-Dokumenten vertraut sind, lesen Sie die Dokumentation, in der erklärt wird, wie Sie Ihre eigenen wiederverwendbaren QML-Typen in QML-Dokumenten definieren und verwenden können.

Weitere Informationen finden Sie unter Definieren von Objekttypen durch QML-Dokumente.

Definition von anonymen Typen mit Komponente

Eine weitere Methode zur Erstellung von Objekttypen innerhalb von QML ist die Verwendung des Typs Component. Damit kann ein Typ inline in einem QML-Dokument definiert werden, 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 Objekt myComponent im Wesentlichen einen anonymen Typ, der mit Component::createObject instanziiert werden kann, um Objekte dieses anonymen Typs zu erstellen.

Inline-Komponenten haben alle Eigenschaften von regulären Top-Level-Komponenten und verwenden dieselbe import Liste wie das sie enthaltende QML-Dokument.

Beachten Sie, dass jede Component Objektdeklaration ihren eigenen Komponentenbereich erzeugt. Alle id-Werte, die innerhalb einer Component Objektdeklaration verwendet und referenziert werden, müssen innerhalb dieses Bereichs eindeutig sein, müssen aber nicht innerhalb des Dokuments, in dem die Inline-Komponente deklariert ist, eindeutig sein. So könnte die in der myComponent Objektdeklaration deklarierte Rectangle eine id von root haben, ohne mit der für das Item Objekt im selben Dokument deklarierten root in Konflikt zu geraten, da diese beiden id-Werte in unterschiedlichen Komponentenbereichen deklariert sind.

Weitere Einzelheiten finden Sie unter Scope and Naming Resolution.

Definieren von Objekttypen aus C++

C++-Plugin-Autoren und Anwendungsentwickler können in C++ definierte Typen über die vom Modul Qt Qml bereitgestellte API registrieren. Es gibt verschiedene Registrierungsfunktionen, die jeweils die Erfüllung verschiedener Anwendungsfälle ermöglichen. Weitere Informationen zu diesen Registrierungsfunktionen und zu den Besonderheiten der Offenlegung von benutzerdefinierten C++-Typen für QML finden Sie in der Dokumentation zu Defining QML Types from C++.

Das QML-Typsystem basiert auf Importen, Plugins und Erweiterungen, die in einem bekannten Importpfad installiert werden. Plugins können von Drittentwicklern bereitgestellt und von Entwicklern von Client-Anwendungen wiederverwendet werden. Weitere Informationen zur Erstellung und Bereitstellung eines QML-Erweiterungsmoduls finden Sie in der Dokumentation über QML-Module.

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