Основные типы QML
QML поддерживает ряд основных типов.
Основной тип — это тип, который относится к простому значению, например, int или string. Это отличается от типов QML объектов, которые относятся к объекту с свойствами, сигналами, методами и так далее. В отличие от типа объекта, основной тип не может быть использован для объявления QML объектов: например, нельзя объявить объект int{} или объект size{}.
Основные типы могут использоваться для ссылки на:
- Единственное значение (например, int относится к одному числу, var может относиться к одному списку элементов)
- Значение, которое содержит простую последовательность пар свойство-значение (например, size относится к значению с атрибутами
widthиheight)
Поддерживаемые основные типы
Некоторые основные типы поддерживаются движком по умолчанию и не требуют заявления об импорте для использования, в то время как для других требуется, чтобы клиент импортировал модуль, который их предоставляет. Все основные типы, перечисленные ниже, могут использоваться как тип property в документе QML, за исключением следующих:
-
listдолжен использоваться в сочетании с типом QML объекта -
enumerationне может использоваться напрямую, так как перечисление должно быть определено зарегистрированным типом QML объекта
Основные типы, предоставляемые языком QML
Основные типы, которые поддерживаются в языке QML по умолчанию, перечислены ниже:
Двоичное значение истина/ложь |
|
Число с десятичной точкой, хранящееся с двойной точностью |
|
Именованное значение перечисления |
|
Целое число, например 0, 10 или -20 |
|
Список QML объектов |
|
Число с десятичной точкой |
|
Строка произвольного формата |
|
Локатор ресурса |
|
Общий тип свойства |
Основные типы, предоставляемые модулями QML
Модули QML могут расширять язык QML дополнительными основными типами. Например, ниже приведены основные типы, предоставляемые модулем QtQuick:
Значение даты |
|
Значение с атрибутами x и y |
|
Значение с атрибутами x, y, width и height |
|
Значение с атрибутами width и height |
|
Значение цвета ARGB. Тип цвета относится к значению цвета ARGB. Его можно задать несколькими способами: |
|
Значение шрифта со свойствами QFont. Тип шрифта относится к значению шрифта со свойствами QFont |
|
Тип matrix4x4 представляет собой матрицу 4 строки и 4 столбца |
|
Тип quaternion имеет скалярные, x, y и z атрибуты |
|
Тип vector2d имеет атрибуты x и y |
|
Значение с атрибутами x, y и z |
|
Тип vector4d имеет атрибуты x, y, z и w |
Глобальный объект Qt предоставляет полезные функции для работы со значениями основных типов.
В настоящее время только QML-модули, предоставляемые Qt, могут предоставлять свои собственные основные типы, однако это может измениться в будущих выпусках Qt QML. Для использования типов, предоставляемых конкретным QML-модулем, клиенты должны импортировать этот модуль в свои QML-документы.
Поведение изменения свойств для основных типов
У некоторых основных типов есть свойства: например, у типа font есть свойства pixelSize, family и bold. В отличие от свойств объектных типов, свойства основных типов не предоставляют собственных сигналов изменения свойства. Возможно только создание обработчика сигнала изменения свойства для самого свойства основного типа:
Text {
// invalid!
onFont.pixelSizeChanged: doSomething()
// also invalid!
font {
onPixelSizeChanged: doSomething()
}
// but this is ok
onFontChanged: doSomething()
} Однако следует помнить, что сигнал изменения свойства для основного типа генерируется всякий раз, когда изменяется любой его атрибут, а также при изменении самого свойства. Рассмотрим, например, следующий код:
Text {
onFontChanged: console.log("font changed")
Text { id: otherText }
focus: true
// changing any of the font attributes, or reassigning the property
// to a different font value, will invoke the onFontChanged handler
Keys.onDigit1Pressed: font.pixelSize += 1
Keys.onDigit2Pressed: font.b = !font.b
Keys.onDigit3Pressed: font = otherText.font
} В отличие от этого, свойства типа объекта генерируют свои собственные сигналы изменения свойства, и обработчик сигнала изменения свойства для свойства типа объекта вызывается только при переприсвоении свойства к другому значению объекта.
См. также QML Система типов.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qtqml-typesystem-basictypes.html