Структура документа QML
Документ QML — это автономный фрагмент исходного кода QML, состоящий из двух частей:
- Его операторы import
- Объявление единственного корневого объекта
По соглашению, единственная пустая строка отделяет импорты от определения иерархии объектов.
Документы QML всегда кодируются в формате UTF-8.
Импорты
Документ должен импортировать необходимые модули или пространства имен типов, чтобы позволить движку загрузить типы объектов QML, на которые ссылается документ. По умолчанию, документ может получить доступ к любым типам объектов QML, которые были определены в .qml файлах в той же директории; если документу необходимо обратиться к другим типам объектов, он должен импортировать пространство имен типов, в котором эти типы были зарегистрированы.
QML не имеет препроцессора, который изменяет документ перед представлением его движку QML, в отличие от C или C++. Операторы import не копируют и не добавляют код в документ, а вместо этого указывают движку QML, как разрешить ссылки на типы, найденные в документе. Любая ссылка на тип, присутствующая в документе QML — например, Rectangle и ListView — включая те, что сделаны внутри блока JavaScript или связей свойств, разрешаются исключительно на основе операторов импорта. Должен быть хотя бы один оператор import , например, import QtQuick 2.0.
Подробную информацию об импортах QML можно найти в документации Синтаксис QML — Операторы импорта.
Объявление корневого объекта
Документ QML описывает иерархию объектов, которые могут быть созданы. Каждое определение объекта имеет определенную структуру; оно имеет тип, может иметь идентификатор и имя объекта, свойства, методы, сигналы и обработчики сигналов.
Файл QML должен содержать только одно определение корневого объекта. Следующее является некорректным и вызовет ошибку:
// MyQmlFile.qml
import QtQuick 2.0
Rectangle { width: 200; height: 200; color: "red" }
Rectangle { width: 200; height: 200; color: "blue" } // invalid! Это потому, что файл .qml автоматически определяет тип QML, который инкапсулирует одно определение QML-объекта. Это подробно обсуждается в Документы как определения типов QML-объектов.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qtqml-documents-structure.html