Prototyping mit dem Tool QML Runtime
Qt enthält die ausführbare Datei qml
, ein Dienstprogramm zum Laden und Anzeigen von QML-Dokumenten.
Das Dienstprogramm qml
ist hauptsächlich für das Testen Ihrer QML-Anwendungen und -Komponenten gedacht. Um eine QML-Anwendung in einer Produktionsumgebung zu starten, müssen Sie häufig eine benutzerdefinierte C++-Anwendung entwickeln oder die QML-Datei in einem Modul bündeln. Weitere Informationen finden Sie unter Bereitstellen von QML-Anwendungen. Bei einem bloßen Item als Root-Element erstellt qml
automatisch ein Fenster, um die Szene anzuzeigen. QQmlComponent::create () wird dies nicht tun. Wenn Sie also von einem mit qml
entwickelten Prototyp zu einer C++-Anwendung wechseln, müssen Sie entweder sicherstellen, dass das Wurzelelement ein Window ist, oder ein QQuickView in C++ erstellen, um das Wurzelelement Item aufzunehmen. In der Zwischenzeit können Sie jedoch Teile Ihres Prototyps separat mit dem Tool qml
laden und testen.
Um eine .qml-Datei zu laden, geben Sie den Dateipfad an der Eingabeaufforderung an:
$ qml myqmlfile.qml
Um die Konfigurationsoptionen zu sehen, führen Sie qml
mit dem Argument --help
aus.
Wenn das Stammobjekt in der QML-Datei, die Sie laden, ein Element und kein Fenster ist, muss es in ein Fenster eingeschlossen werden, um angezeigt zu werden. Während dies geschieht, wird das bereits geladene Top-Level-Objekt durch ein PartialScene
-Objekt dargestellt. Das Werkzeug qml
lädt dann weitere QML-Dateien, um zu entscheiden, was als Nächstes zu tun ist: Eine davon ist eine Konfigurationsdatei, die angibt, in welche Art von Container das PartialScene
verpackt werden soll. Die Eigenschaft PartialScene.container
gibt eine URL an, die auf den QML-Quellcode für die Containerkomponente verweist, die normalerweise eine Window deklarieren sollte, in die das zuerst geladene Item verpackt werden soll. Somit ist der Prozess des Einpackens eines Elements in ein Fenster programmierbar; und standardmäßig werden diese beiden zusätzlichen QML-Dateien aus Ressourcen innerhalb der ausführbaren qml-Datei geladen. Sie können die verfügbaren Konfigurationen mit dem Befehl --list-conf
auflisten:
$ qml --list-conf Built-in configurations: default resizeToItem
Die Konfiguration default
bietet das Standardverhalten: Das Root-Element wird beim Start so angepasst, dass es das Wrapper-Fenster ausfüllt, und auch, wenn der Benutzer die Größe des Fensters ändert. Die alternative Konfiguration resizeToItem
funktioniert umgekehrt: Das Element kann seine eigene Größe programmatisch festlegen (z. B. durch Erstellen von Bindungen zu seinen eigenen Eigenschaften width
und height
), und das Wrapper-Fenster wird so angepasst, dass es passt (vorbehaltlich aller Beschränkungen, die vom Fenstersystem auferlegt werden können). Sie können eine der beiden Möglichkeiten mit der Option -c
oder --config
wählen:
$ qml -c resizeToItem selfResizingItem.qml
Zusätzliche Konfigurationen können hinzugefügt werden, indem Sie Konfigurationsverzeichnisse in QStandardPaths::AppConfigLocation erstellen, die jeweils zwei QML-Dateien enthalten: eine Konfigurationsdatei mit dem Namen configuration.qml
und eine QML-Datei, die den Item-Wrapper deklariert, der einen beliebigen Namen haben kann. Wenn dies geschehen ist, listet der Befehl qml --list-conf
auch diese zusätzlichen Konfigurationen auf, während die Option --verbose
diese erweitert, um die vollständigen Pfade zu diesen Konfigurationen und die zusätzlichen Orte, die durchsucht wurden, anzugeben:
$ qml --list-conf --verbose Built-in configurations: default resizeToItem Other configurations: /home/myuser/.config/QtProject/Qml Runtime/simplest Checked in: /home/myuser/.config/QtProject/Qml Runtime /etc/xdg/QtProject/Qml Runtime
Hier ist ein Beispiel für eine configuration.qml
Datei:
import QmlRuntime.Config Configuration { PartialScene { itemType: "QQuickItem" container: Qt.resolvedUrl("ItemWrapper.qml") } }
Und hier ist die einfachste mögliche ItemWrapper.qml
, auf die die Eigenschaft container
zeigen könnte:
import QtQuick Window { required property Item containedObject: null onContainedObjectChanged: { if (containedObject == undefined || containedObject == null) { visible = false; } else { containedObject.parent = contentItem; visible = true; } } }
Wenn diese Dateien erstellt wurden, können Sie die Option qml -c
verwenden, die den Namen des Verzeichnisses angibt, das die Datei configuration.qml
enthält, die den Pfad zum Containerobjekt angibt:
$ qml -c simplest mycomponent.qml
Die Laufzeit von qml
wird direkt die Eigenschaft containedObject
setzen, die diesen Namen haben muss; und wenn sie gesetzt ist, wird Item auf Window reparentiert und angezeigt. Da dieses Fenster in QML deklariert ist, können Sie, wenn Sie Ihr eigenes Wrapper-Fenster schreiben, alle zusätzlichen Funktionen hinzufügen, die Sie wünschen: die Größenanpassung auf eine angepasste Art und Weise zu handhaben oder Fähigkeiten hinzuzufügen, die Sie während des Prototypings nützlich finden.
Unabhängig davon, was in AppConfigLocation
gefunden wurde, können Sie alternativ die Option qml -c
verwenden, die den vollständigen Pfad zur Datei configuration.qml
angibt, die wiederum den vollständigen Pfad zum Container-Objekt angeben kann; diese Dateien können sich also überall befinden.
Zusätzlich zu den Funktionen, die in den Konfigurationsdateien deklariert werden können, bietet das Werkzeug qml
auch einige weitere Funktionen über Befehlszeilenoptionen. Verwenden Sie die Option --help
, um eine aktuelle Liste zu erhalten.
© 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.