Прототипирование с qmlscene
Qt 5 включает qmlscene, утилиту, которая загружает и отображает QML-документы даже до завершения приложения. Эта утилита также предоставляет следующие дополнительные функции, полезные при разработке QML-приложений:
- Отображение QML-документа в окне максимального размера.
- Отображение QML-документа в полноэкранном режиме.
- Сделать окно прозрачным.
- Отключить многократную выборку (антиалиасинг).
- Не определять версию .qml-файла.
- Запустить все анимации в замедленном движении.
- Изменить размер окна до размера корневого элемента.
- Добавить список путей импорта.
- Добавить указанный пакет.
- Использовать файл перевода для установки языка.
Утилита qmlscene предназначена для тестирования ваших QML-приложений, а не для запуска в производственной среде. Для запуска QML-приложения в производственной среде разработайте пользовательское C++-приложение или включите QML-файл в модуль. См. Развертывание QML-приложений для получения дополнительной информации.
Для загрузки .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 2.3
ListView {
width: 200; height: 300
model: lottoNumbers
delegate: Text { text: number }
} Если в каталоге документа есть каталог dummydata, содержащий файл lottoNumbers.qml такого вида:
import QtQuick 2.3
ListModel {
ListElement { number: 23 }
ListElement { number: 44 }
ListElement { number: 78 }
} Тогда эта модель будет автоматически загружена в ListView в предыдущем документе.
Дочерние свойства включаются при загрузке из dummydata. Следующий документ ссылается на свойство clock.time.
import QtQuick 2.3
Text { text: clock.time } Значение текста может быть заполнено файлом dummydata/clock.qml со свойством time в корневом контексте:
import QtQuick 2.3
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-5.9/qtquick-qmlscene.html