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