Spec-Zone.ru › Qt 5.15

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

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

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

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

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

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

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

Некоторые основные типы поддерживаются движком по умолчанию и не требуют заявления об импорте, для использования, в то время как другие требуют, чтобы клиент импортировал модуль, который их предоставляет. Все перечисленные ниже основные типы могут использоваться в качестве 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

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

Spec-Zone.ru

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