Spec-Zone.ru › Qt 5.15

Прототипирование с qmlscene

Qt 5 включает qmlscene, утилиту, которая загружает и отображает QML-документы даже до завершения создания приложения. Эта утилита также предоставляет следующие дополнительные функции, полезные при разработке QML-приложений:

  • Просмотр QML-документа в максимальном окне.
  • Просмотр QML-документа в полноэкранном режиме.
  • Сделать окно прозрачным.
  • Отключить многократное сэмплирование (антизалисивание).
  • Не определять версию файла .qml.
  • Запустить все анимации в замедленном движении.
  • Изменить размер окна на размер корневого элемента.
  • Добавить список путей импорта.
  • Добавить именованный пакет.
  • Использовать файл перевода для установки языка.

Утилита qmlscene предназначена для тестирования ваших QML-приложений, а не для запуска в рабочей среде. Для запуска QML-приложения в рабочей среде разработайте собственное приложение на C++ или упакуйте QML-файл в модуль. Смотрите Развертывание QML-приложений для получения дополнительной информации. При заданном простом элементе Item в качестве корневого элемента, qmlscene автоматически создаст окно для отображения сцены. Обратите внимание, что QQmlComponent::create() этого не сделает. Поэтому, при переходе от прототипа, разработанного с помощью qmlscene, к приложению на C++, необходимо либо убедиться, что корневой элемент является Window, либо вручную создать окно с помощью C++ API 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 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.15/qtquick-qmlscene.html

Spec-Zone.ru

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