Прототипирование с помощью qmlscene
Qt включает qmlscene, утилиту, которая загружает и отображает документы QML даже до завершения приложения. Эта утилита также предоставляет следующие дополнительные функции, полезные при разработке приложений QML:
- Просмотр документа QML в окне, максимизированном по размеру.
- Просмотр документа QML в полноэкранном режиме.
- Сделать окно прозрачным.
- Отключить многократную выборку (сглаживание).
- Не определять версию файла .qml.
- Запустить все анимации в замедленном режиме.
- Изменить размер окна до размера корневого элемента.
- Добавить список путей импорта.
- Добавить пакет с именем.
- Использовать файл перевода для установки языка.
Утилита qmlscene предназначена для тестирования ваших приложений QML, а не для запуска в производственной среде. Для запуска приложения QML в производственной среде разработайте собственное приложение C++ или упакуйте файл QML в модуль. Смотрите Развёртывание приложений QML для получения дополнительной информации. При задании простого элемента Item в качестве корневого элемента, qmlscene автоматически создаст окно для отображения сцены. Отметим, что QQmlComponent::create() этого не делает. Поэтому при переходе от прототипа, разработанного с помощью qmlscene, к приложению C++, вам необходимо либо убедиться, что корневым элементом является Window, либо вручную создать окно, используя API C++ QtQuick. С другой стороны, возможность автоматического создания окна предоставляет вам возможность загружать части вашего прототипа по отдельности с помощью qmlscene.
Для загрузки файла .qml запустите инструмент и выберите файл для открытия или укажите путь к файлу в командной строке:
qmlscene myqmlfile.qml
Чтобы увидеть параметры конфигурации, запустите qmlscene с аргументом -help.
Добавление путей импорта модулей
Дополнительные пути импорта модулей могут быть указаны с использованием флага -I. Например, пример плагина QML создаёт плагин C++, идентифицированный по имени пространства имён TimeExample. Для загрузки плагина необходимо запустить qmlscene с флагом -I из базового каталога примера:
qmlscene -I imports plugins.qml
Это добавляет текущий каталог в путь импорта, так что qmlscene найдёт плагин в каталоге imports.
Примечание: По умолчанию текущий каталог включается в путь поиска импорта, но модули в пространстве имён, таком как TimeExample не находятся, если путь не указан явно.
Загрузка тестовых данных
Часто приложения QML прототипируются с тестовыми данными, которые позже заменяются реальными источниками данных из C++ плагинов. Утилита qmlscene помогает в этом, загружая тестовые данные в контекст приложения. Она ищет каталог с именем dummydata в том же каталоге, что и целевой файл QML, и загружает файлы .qml в этом каталоге в качестве объектов QML и связывает их с корневым контекстом как свойства, имеющие имена файлов.
Например, следующий документ QML ссылается на свойство lottoNumbers, которого нет в документе:
import QtQuick
ListView {
width: 200; height: 300
model: lottoNumbers
delegate: Text { text: number }
} Если в каталоге документа существует каталог dummydata, содержащий файл lottoNumbers.qml, например:
import QtQuick
ListModel {
ListElement { number: 23 }
ListElement { number: 44 }
ListElement { number: 78 }
} Тогда эта модель будет автоматически загружена в ListView в предыдущем документе.
Вложенные свойства включаются при загрузке из dummydata. Следующий документ ссылается на свойство clock.time:
import QtQuick
Text { text: clock.time } Значение текста может быть заполнено файлом dummydata/clock.qml с свойством time в корневом контексте:
import QtQuick
QtObject { property int time: 54321 } Для замены этого реальными данными, свяжите объект реальных данных с корневым контекстом в C++ с помощью QQmlContext::setContextProperty(). Это подробно описано в Интеграция QML и C++.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qtquick-qmlscene.html