Spec-Zone.ru › Qt 6.1

Типы 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 — использование типа Компонент. Это позволяет определить тип встраиваемо в 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-документ.

Обратите внимание, что каждое объявление объекта Компонент создаёт свою собственную область видимости компонента. Любые значения id, используемые и ссылающиеся на них внутри объявления объекта Компонент, должны быть уникальными в рамках этой области видимости, но не обязательно уникальными в рамках документа, в котором объявлен встроенный компонент. Таким образом, Прямоугольник, объявленный в объекте myComponent , мог бы иметь id root без конфликта с объявленным для объекта Элемент в том же документе root, поскольку эти два значения 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-6.1/qtqml-typesystem-objecttypes.html

Spec-Zone.ru

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