Тип QML State
Определяет конфигурации объектов и свойств. Подробнее...
| Заявление об импорте: | import QtQuick 2.1 |
Свойства
Подробное описание
Состояние — это набор объединённых изменений от стандартной конфигурации.
У всех элементов есть стандартное состояние, определяющее стандартную конфигурацию объектов и значений свойств. Новые состояния могут быть определены путём добавления элементов State в свойство states, позволяя элементам переключаться между различными конфигурациями. Эти конфигурации, например, могут использоваться для применения различных наборов значений свойств или выполнения различных скриптов.
Следующий пример отображает один прямоугольник. В стандартном состоянии прямоугольник имеет чёрный цвет. В состоянии "нажатие" объект PropertyChanges изменяет цвет прямоугольника на красный. Нажатие внутри зоны нажатия переключает состояние прямоугольника между стандартным состоянием и состоянием "нажатие", таким образом, переключая цвет прямоугольника между чёрным и красным.
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.
Документация свойств
[по умолчанию] changes : список<Change>
Это свойство хранит изменения, которые нужно применить для данного состояния
По умолчанию эти изменения применяются к стандартному состоянию. Если состояние расширяет другое состояние, то изменения применяются к расширяемому состоянию.
extend : строка
Это свойство хранит состояние, которое расширяет данное состояние.
Когда состояние расширяет другое состояние, оно наследует все изменения этого состояния.
Расширяемое состояние рассматривается как базовое состояние по отношению к изменениям, указанным расширяющим состоянием.
name : строка
Это свойство хранит имя состояния.
Каждое состояние должно иметь уникальное имя в своём элементе.
when : логическое
Это свойство указывает, когда должно быть применено состояние.
Это должно быть выражение, которое оценивается как true при необходимости применения состояния. Например, следующий прямоугольник переходит в и из состояния "скрытый" при нажатии на зону нажатия:
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-6.1/qml-qtquick-state.html