Система типов QML
Типы, которые могут использоваться в определении иерархии объектов в документе QML, могут поступать из различных источников. Они могут быть:
- изначально предоставлены языком QML;
- зарегистрированы через C++ модулями QML;
- предоставлены модулями QML в виде документов QML.
Кроме того, разработчики приложений могут предоставлять свои собственные типы, либо напрямую регистрируя типы C++, либо определяя повторно используемые компоненты в документах QML, которые затем можно импортировать.
Откуда бы ни брались определения типов, движок будет обеспечивать типобезопасность для свойств и экземпляров этих типов.
Базовые типы
Язык QML имеет встроенную поддержку различных примитивных типов, включая целые числа, числа с плавающей запятой двойной точности, строки и логические значения. Объекты могут иметь свойства этих типов, и значения этих типов могут передаваться в качестве аргументов методам объектов.
Дополнительную информацию об основных типах смотрите в разделе «Базовые типы QML».
Типы JavaScript
Объекты и массивы JavaScript поддерживаются механизмом QML. Любой стандартный тип JavaScript может быть создан и сохранен с использованием универсального типа var
.
Например, доступны стандартные типы Date
и Array
, как показано ниже:
import QtQuick 2.0
Item {
property var theArray: []
property var theDate: new Date()
Component.onCompleted: {
for (var i = 0; i < 10; i++)
theArray.push("Item " + i)
console.log("There are", theArray.length, "items in the array")
console.log("The time is", theDate.toUTCString())
}
}
Дополнительную информацию смотрите в разделе «Выражения JavaScript в документах QML».
Объектные типы QML
Объектный тип QML – это тип, из которого может быть создан экземпляр объекта QML. Объектные типы QML являются производными от QtObject
и предоставляются модулями QML. Приложения могут импортировать эти модули, чтобы использовать предоставляемые ими объектные типы. Модуль QtQuick
предоставляет наиболее распространенные объектные типы, необходимые для создания пользовательских интерфейсов в QML.
Наконец, каждый документ QML неявно определяет объектный тип QML, который можно повторно использовать в других документах QML. Подробную информацию о типах объектов смотрите в разделе «Объектные типы QML».