Spec-Zone.ru › Qt

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

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

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

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

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

Когда переменная или свойство содержат базовый тип и присваиваются другой переменной или свойству, создается копия значения. В JavaScript это значение называется примитивным значением.

Поддерживаемые базовые типы

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

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

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

Ниже приведены базовые типы, которые нативно поддерживаются языком QML:

bool

Двоичное значение true/false

double

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

enumeration

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

int

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

list

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

real

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

string

Строка произвольного текста

url

Указатель на ресурс

var

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

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

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

color

date

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

font

matrix4x4

point

Значение со свойствами x и y

quaternion

rect

Значение со свойствами x, y, width и height

size

Значение со свойствами width и height

vector2d

vector3d

vector4d

Глобальный объект 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/qt-6.2/qtqml-typesystem-basictypes.html

Spec-Zone.ru

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