C
状态 QML 类型
定义对象和属性的配置。 更多...
引入语句 | import QtQuick |
自从 | Qt Quick Ultralite 1.0 |
属性Changes
详细说明More...
状态是一组来自默认配置的批量更改。
所有根项都有一个默认状态,该状态定义了对象和属性的默认配置。可以通过将 State 项添加到 states 属性来定义新状态,以便项目可以在不同的配置之间切换。这些配置可以用于应用不同的属性值集或执行不同的脚本。
以下示例显示一个单个 Rectangle。在默认状态下,矩形是黑色的。在“clicked”状态下,一个 PropertyChanges 对象将矩形的颜色更改为红色。在 MouseArea 内单击可将矩形的颜色在黑和红之间切换。
import QtQuick 2.15 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" } } ] }
注意默认状态使用空字符串 ("") 来引用。
状态通常与 Transitions 一起使用,为状态变化提供动画。
注意:不允许从同一对象的另一个状态内部设置对象的状。
另请参阅使用状态、动画和过渡、和 Qt Quick Ultralite 中的重要概念 - 状态、过渡和动画。
属性文档
[默认] Changes : list<Change> |
此属性包含应用于此状态的更改
默认情况下,这些更改应用于默认状态。如果状态扩展了另一个状态,则更改应用于被扩展的状态。
Extend : string |
此属性包含此状态扩展的状态。
当一个状态扩展另一个状态时,它会继承该状态的全部更改。
正在扩展的状态在扩展状态指定的更改方面被视为基本状态。
name : string |
此属性包含状态的名称。
每个状态在其项目内应具有唯一名称。
when : bool |
此属性包含应应用状态的条件。
应将其设置为表达式,当您想要应用状态时,该表达式评估为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 } } }
如果一组中的多个状态具有同时评估为true
的when
子句,则只应用匹配的第一个状态。例如,在此片段中,当私有条件变为true
时,总是选择state1
而不是state2
。
在某些Qt许可证下提供。
了解更多信息。