Spec-Zone.ru › Qt 5.6

Основные типы QML

QML поддерживает ряд основных типов.

Основной тип — это тип, который относится к простому значению, например, int или string. Это отличается от типов QML объектов, которые относятся к объекту с свойствами, сигналами, методами и так далее. В отличие от типа объекта, основной тип не может быть использован для объявления QML объектов: например, нельзя объявить объект int{} или объект size{}.

Основные типы могут использоваться для ссылки на:

  • Единственное значение (например, int относится к одному числу, var может относиться к одному списку элементов)
  • Значение, которое содержит простую последовательность пар свойство-значение (например, size относится к значению с атрибутами width и height)

Поддерживаемые основные типы

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

  • list должен использоваться в сочетании с типом QML объекта
  • enumeration не может использоваться напрямую, так как перечисление должно быть определено зарегистрированным типом QML объекта

Основные типы, предоставляемые языком QML

Основные типы, которые поддерживаются в языке QML по умолчанию, перечислены ниже:

bool

Двоичное значение истина/ложь

double

Число с десятичной точкой, хранящееся с двойной точностью

enumeration

Именованное значение перечисления

int

Целое число, например 0, 10 или -20

list

Список QML объектов

real

Число с десятичной точкой

string

Строка произвольного формата

url

Локатор ресурса

var

Общий тип свойства

Основные типы, предоставляемые модулями QML

Модули QML могут расширять язык QML дополнительными основными типами. Например, ниже приведены основные типы, предоставляемые модулем QtQuick:

date

Значение даты

point

Значение с атрибутами x и y

rect

Значение с атрибутами x, y, width и height

size

Значение с атрибутами width и height

color

Значение цвета ARGB. Тип цвета относится к значению цвета ARGB. Его можно задать несколькими способами:

font

Значение шрифта со свойствами QFont. Тип шрифта относится к значению шрифта со свойствами QFont

matrix4x4

Тип matrix4x4 представляет собой матрицу 4 строки и 4 столбца

quaternion

Тип quaternion имеет скалярные, x, y и z атрибуты

vector2d

Тип vector2d имеет атрибуты x и y

vector3d

Значение с атрибутами x, y и z

vector4d

Тип 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

Spec-Zone.ru

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