Прототипирование с помощью инструмента QML Runtime
Qt включает исполняемый файл qml, утилиту, которая загружает и отображает документы QML.
Утилита qml предназначена в основном для тестирования ваших приложений и компонентов QML. Для запуска приложения QML в производственной среде часто необходимо разработать пользовательское приложение C++ или объединить файл QML в модуль. Для получения дополнительной информации см. Развёртывание приложений QML. При задании элемента Item в качестве корневого элемента, qml автоматически создаст окно для отображения сцены. Обратите внимание, что QQmlComponent::create() этого не сделает. Поэтому, переходя от прототипа, разработанного с помощью qml, к приложению C++, необходимо либо убедиться, что корневой элемент является элементом Window, либо создать QQuickView в C++, чтобы разместить корневой элемент Item. Но пока вы можете загрузить и протестировать части вашего прототипа отдельно с помощью инструмента qml.
Для загрузки файла .qml укажите путь к файлу в командной строке:
$ qml myqmlfile.qml
Чтобы увидеть параметры конфигурации, запустите qml с аргументом --help.
Когда корневой объект в файле QML, который вы загружаете, является объектом Item, а не Window, его необходимо обернуть в окно Window, чтобы его отобразить. Пока эта работа не завершена, загруженный верхнеуровневый объект представлен объектом PartialScene. Инструмент qml затем загружает дополнительные файлы QML, чтобы определить, что делать дальше: один из них — это файл конфигурации, который определяет, в какой контейнер обернуть PartialScene. Свойство PartialScene.container задаёт URL, указывающий на исходный код QML для компонента контейнера, который обычно должен объявлять Window, в котором нужно обернуть Item, который был загружен в первую очередь. Таким образом, процесс обертывания Item в Window программируется; и по умолчанию эти два дополнительных файла QML загружаются из ресурсов внутри исполняемого файла qml. Вы можете перечислить доступные конфигурации с помощью команды --list-conf.
$ qml --list-conf Built-in configurations: default resizeToItem
Конфигурация default обеспечивает стандартное поведение: корневой элемент Item будет изменён на размер, заполняющий окно-контейнер при запуске и также при изменении размера окна пользователем. Альтернативная конфигурация resizeToItem работает наоборот: элемент Item может программно установить свой собственный размер (например, создавая привязки к своим свойствам width и height), а окно-контейнер Window будет изменён на размер, подходящий к элементу (с учётом любых ограничений, которые могут быть наложены системой окон). Вы можете выбрать любой из этих вариантов, используя опцию -c или --config:
$ qml -c resizeToItem selfResizingItem.qml
Дополнительные конфигурации можно добавить, создав каталоги конфигурации в QStandardPaths::AppConfigLocation, каждый с двумя файлами QML внутри: файлом конфигурации с именем configuration.qml, и файлом QML, который объявляет элемент обертки Item, который может иметь любое имя.
Вот пример файла configuration.qml:
import QmlRuntime.Config 1.0
Configuration {
PartialScene {
itemType: "QQuickItem"
container: Qt.resolvedUrl("ItemWrapper.qml")
}
} И вот самый простой возможный файл ItemWrapper.qml, на который может указывать свойство container:
import QtQuick 2.0
import QtQuick.Window 2.0
Window {
property Item containedObject: null
onContainedObjectChanged: {
if (containedObject == undefined || containedObject == null) {
visible = false;
} else {
containedObject.parent = contentItem;
visible = true;
}
}
} Когда это сделано, вы можете использовать опцию qml -c, предоставляя полный путь к файлу configuration.qml, который указывает путь к объекту контейнера:
$ qml -c ~/.config/QtProject/Qml\ Runtime/simplest/configuration.qml mycomponent.qml
Интерпретатор qml напрямую установит свойство containedObject, которое обязательно должно иметь такое имя; и когда оно установлено, элемент Item будет переродирован в Window и отображён. Поскольку это окно объявлено в QML, когда вы создаёте своё собственное окно-обёртку, вы можете добавлять любые дополнительные функции, которые вам нужны: для обработки изменения размера особым способом или для добавления функций, которые могут быть полезны при прототипировании.
В дополнение к функциям, которые могут быть объявлены в файлах конфигурации, инструмент qml также предоставляет несколько дополнительных функций через параметры командной строки. Используйте опцию --help для получения актуального списка.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtquick-qml-runtime.html