QML-Dokumente
Ein QML-Dokument ist eine Zeichenkette, die der QML-Dokumentensyntax entspricht. Ein Dokument definiert einen QML-Objekttyp. Ein Dokument wird in der Regel aus einer „ ".qml" “-Datei geladen, die entweder lokal oder remote gespeichert ist, kann aber auch manuell im Code erstellt werden. Eine Instanz des durch ein Dokument definierten Objekttyps kann mithilfe eines „ Component “ im QML-Code oder eines „ QQmlComponent “ in C++ erstellt werden. Alternativ kann der Typ direkt in Objektdeklarationen in anderen Dokumenten verwendet werden, sofern der Objekttyp dem QML-Typsystem explizit mit einem bestimmten Typnamen zur Verfügung gestellt wurde.
Die Möglichkeit, wiederverwendbare QML-Objekttypen in Dokumenten zu definieren, ist ein wichtiger Faktor, der es Anwendern ermöglicht, modularen, gut lesbaren und wartbaren Code zu schreiben.
Seit Qt 5.4 kann ein Dokument auch die Dateiendung „ ".ui.qml" “ haben. Die QML-Engine behandelt diese Dateien wie normale „.qml“-Dateien und ignoriert den Teil „ .ui “ der Dateiendung. „ Qt Design Studio “ behandelt diese Dateien als UI-Dateien. Die Dateien können nur eine Teilmenge der QML-Sprachfunktionen enthalten.
Aufbau eines QML-Dokuments
Ein QML-Dokument besteht aus zwei Abschnitten: dem Importabschnitt und dem Objektdeklarationsabschnitt. Der Importabschnitt eines Dokuments enthält Importanweisungen, die festlegen, welche QML-Objekttypen und JavaScript-Ressourcen das Dokument verwenden kann. Der Objektdeklarationsabschnitt definiert den Objektbaum, der bei der Instanziierung des durch das Dokument definierten Objekttyps erstellt werden soll.
Ein Beispiel für ein einfaches Dokument sieht wie folgt aus:
import QtQuick 2.0
Rectangle {
width: 300
height: 200
color: "blue"
}Weitere Informationen zu diesem Thema finden Sie unter „Aufbau eines QML-Dokuments “.
Syntax der Sprache QML
Der Objektdeklarationsabschnitt des Dokuments muss eine gültige Objekthierarchie mit der entsprechenden QML-Syntax angeben. Eine Objektdeklaration kann die Angabe benutzerdefinierter Objektattribute enthalten. Objektmethodenattribute können als JavaScript-Funktionen angegeben werden, und Objekt-Eigenschaftsattribute können Eigenschaftsbindungsausdrücken zugewiesen werden.
Weitere Informationen zur gültigen Syntax finden Sie in der Dokumentation zur QML-Syntax, und ausführliche Informationen zu diesem Thema finden Sie in der Dokumentation zur Integration von QML und JavaScript.
Definition von Objekttypen über QML-Dokumente
Wie im vorherigen Abschnitt kurz beschrieben, definiert ein Dokument implizit einen QML-Objekttyp. Eines der Kernprinzipien von QML ist die Möglichkeit, Objekttypen zu definieren und anschließend wiederzuverwenden. Dies verbessert die Wartbarkeit von QML-Code, erhöht die Lesbarkeit von Objekthierarchiedeklarationen und fördert die Trennung zwischen UI-Definition und Logikimplementierung.
Im folgenden Beispiel definiert der Client-Entwickler einen Typ „ Button “ mithilfe eines Dokuments in einer Datei:
// Button.qml
import QtQuick
Rectangle {
width: 100; height: 100
color: "red"
MouseArea {
anchors.fill: parent
onClicked: console.log("Button clicked!")
}
}Der Typ „ Button “ kann anschließend in einer Anwendung verwendet werden:
|
Ausführliche Informationen zu diesem Thema finden Sie in der Dokumentation zur Definition von Objekttypen in Dokumenten.
Laden von Ressourcen und Netzwerktransparenz
Es ist wichtig zu beachten, dass QML netzwerktransparent ist. Anwendungen können Dokumente von Remote-Pfaden genauso einfach importieren wie Dokumente von lokalen Pfaden. Tatsächlich kann jeder „ url “-Eigenschaft eine Remote- oder lokale URL zugewiesen werden, und die QML-Engine übernimmt die gesamte damit verbundene Netzwerkkommunikation.
Weitere Informationen zur Netzwerktransparenz bei Importen finden Sie in der Dokumentation zur Netzwerktransparenz.
Gültigkeitsbereich und Namensauflösung
Ausdrücke in Dokumenten beziehen sich in der Regel auf Objekte oder Eigenschaften von Objekten. Da mehrere Objekte definiert sein können und verschiedene Objekte Eigenschaften mit demselben Namen haben können, muss QML eine vordefinierte Semantik für die Symbolauflösung festlegen. Ausführliche Informationen zu diesem Thema finden Sie auf der Seite zu Geltungsbereich und Symbolauflösung.
© 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.
