Spec-Zone.ru › Qt 5.9

Типы QML-объектов

Тип QML-объекта — это тип, из которого можно создать QML-объект.

В синтаксическом плане, тип QML-объекта — это тип, который можно использовать для объявления объекта, указав имя типа, за которым следует набор фигурных скобок, содержащих атрибуты этого объекта. Это отличается от базовых типов, которые нельзя использовать таким же образом. Например, Прямоугольник — это тип QML-объекта: он может быть использован для создания объектов типа Rectangle. Это невозможно сделать с примитивными типами, такими как int и bool, которые используются для хранения простых типов данных, а не объектов.

Пользовательские типы QML-объектов могут быть определены, создав файл .qml, который определяет тип, как описано в Документах как определениях типов QML-объектов, или определив тип QML из C++ и зарегистрировав тип в движке QML, как описано в Определении типов QML из C++. Обратите внимание, что в обоих случаях имя типа должно начинаться с заглавной буквы, чтобы быть объявлено как тип QML-объекта в файле QML.

Определение типов объектов из QML

Определение типов объектов с помощью документов QML

Авторы плагинов и разработчики приложений могут предоставлять типы, определённые как документы QML. Документ QML, когда он виден системе импорта QML, определяет тип, идентифицируемый именем файла минус расширения файла.

Таким образом, если существует документ QML с именем "MyButton.qml", он предоставляет определение типа "MyButton", который может быть использован в QML-приложении.

См. документацию по Документам QML для получения информации о том, как определить документ QML, и синтаксисе языка QML. После того, как вы ознакомитесь с языком QML и тем, как определять документы QML, см. документацию, которая объясняет, как определять и использовать свои собственные повторно используемые типы QML в документах QML.

См. Определение типов объектов через документы QML для получения дополнительной информации.

Определение анонимных типов с помощью компонента

Другой метод создания типов объектов изнутри QML — использование типа Component. Это позволяет определять тип в строку внутри документа QML, вместо использования отдельного документа в файле .qml.

Item {
    id: root
    width: 500; height: 500

    Component {
        id: myComponent
        Rectangle { width: 100; height: 100; color: "red" }
    }

    Component.onCompleted: {
        myComponent.createObject(root)
        myComponent.createObject(root, {"x": 200})
    }
}

Здесь объект myComponent по существу определяет анонимный тип, который можно создать с помощью Component::createObject для создания объектов этого анонимного типа.

Встроенные компоненты обладают всеми характеристиками обычных компонентов верхнего уровня и используют тот же import список, что и содержащий их документ QML.

Обратите внимание, что каждое объявление объекта Component создаёт свою собственную область видимости компонента. Любые значения id, используемые и ссылающиеся на них внутри объявления объекта Component, должны быть уникальными в пределах этой области видимости, но не обязательно уникальными в пределах документа, в котором объявлен встроенный компонент. Таким образом, прямоугольник Rectangle, объявленный в объявлении объекта myComponent , мог иметь id root без конфликта с id root , объявленным для объекта Item в том же документе, так как эти два значения id объявлены в разных областях видимости компонентов.

См. Область видимости и разрешение имён для получения дополнительной информации.

Определение типов объектов из C++

Авторы плагинов и разработчики приложений на C++ могут регистрировать типы, определенные в C++, с помощью API, предоставляемого модулем Qt QML. Существуют различные функции регистрации, которые позволяют удовлетворить различные сценарии использования. Для получения дополнительной информации об этих функциях регистрации и особенностях экспонирования пользовательских типов C++ в QML см. документацию по Определению типов QML из C++.

Система типов QML полагается на импорты, плагины и расширения, установленные в известный путь импорта. Плагины могут быть предоставлены сторонними разработчиками и повторно использованы разработчиками прикладных программ. См. документацию по Модулям QML для получения дополнительной информации о создании и развертывании модуля расширения QML.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qtqml-typesystem-objecttypes.html

Spec-Zone.ru

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