Spec-Zone.ru › Qt 5.12

Тип QML State

Определяет конфигурации объектов и свойств. Подробнее...

Заявление об импорте: import QtQuick 2.12
  • Список всех членов, включая унаследованные

Свойства

  • changes : список<Изменение>
  • extend : строка
  • name : строка
  • when : bool

Подробное описание

Состояние — это набор объединённых изменений от значения по умолчанию.

Все элементы имеют состояние по умолчанию, которое определяет конфигурацию объектов и значения свойств по умолчанию. Новые состояния могут быть определены путём добавления элементов State в свойство states, чтобы разрешить элементам переключаться между различными конфигурациями. Эти конфигурации, например, могут использоваться для применения различных наборов значений свойств или выполнения различных скриптов.

Следующий пример отображает один прямоугольник. В состоянии по умолчанию прямоугольник имеет чёрный цвет. В состоянии "clicked" объект PropertyChanges изменяет цвет прямоугольника на красный. Щелчок внутри MouseArea переключает состояние прямоугольника между состоянием по умолчанию и состоянием "clicked", тем самым переключая цвет прямоугольника между чёрным и красным.

import QtQuick 2.0

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "black"

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onClicked: myRect.state == 'clicked' ? myRect.state = "" : myRect.state = 'clicked';
    }

    states: [
        State {
            name: "clicked"
            PropertyChanges { target: myRect; color: "red" }
        }
    ]
}

Обратите внимание, что состояние по умолчанию ссылается с помощью пустой строки ("").

Состояния обычно используются вместе с переходами для обеспечения анимации при изменении состояний.

Примечание: Установка состояния объекта изнутри другого состояния того же объекта запрещена.

См. также Пример состояний, Состояния Qt Quick, Переходы и Qt QML.

Документация по свойствам

[default] changes : список<Изменение>

Это свойство содержит изменения, которые необходимо применить для этого состояния.

По умолчанию эти изменения применяются к состоянию по умолчанию. Если состояние расширяет другое состояние, изменения применяются к расширяемому состоянию.

extend : строка

Это свойство содержит состояние, которое расширяет данное состояние.

Когда состояние расширяет другое состояние, оно наследует все изменения этого состояния.

Расширяемое состояние рассматривается как базовое состояние по отношению к изменениям, указанным расширяемым состоянием.

name : строка

Это свойство содержит имя состояния.

Каждое состояние должно иметь уникальное имя в пределах своего элемента.

when : логическое

Это свойство содержит условие, при котором должно быть применено состояние.

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

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "red"

    MouseArea { id: mouseArea; anchors.fill: parent }

    states: State {
        name: "hidden"; when: mouseArea.pressed
        PropertyChanges { target: myRect; opacity: 0 }
    }
}

Если несколько состояний в группе имеют условия when, которые вычисляются как true одновременно, будет применено первое соответствующее состояние. Например, в следующем фрагменте state1 всегда будет выбрано вместо state2, когда sharedCondition станет true.

Item {
    states: [
        State { name: "state1"; when: sharedCondition },
        State { name: "state2"; when: sharedCondition }
    ]
    // ...
}

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qml-qtquick-state.html

Spec-Zone.ru

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