Spec-Zone.ru › Qt

Прототипирование с помощью инструмента 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API