状态 QML 类型
定义对象和属性的配置。 更多...
导入声明 | import QtQuick |
属性
详细描述
状态 是从默认配置中批处理的一组更改。
所有项都有一个默认状态,该默认状态定义了对象和属性值的默认配置。可以通过将状态项添加到 states 属性来定义新状态,允许项在不同的配置之间切换。例如,可以使用这些配置来应用不同的属性值集或执行不同的脚本。
以下示例显示一个单独的 Rectangle。在默认状态中,矩形为黑色。在 "clicked" 状态中,一个 PropertyChanges 对象将矩形的颜色更改为红色。点击 MouseArea 内可切换矩形的默认状态和 "clicked" 状态,从而在黑色和红色之间切换矩形的颜色。
import QtQuick 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 快速状态、过渡 和 Qt Qml。
属性文档
changes : list<Change> |
此属性包含应用于当前状态要应用的更改
默认情况下,这些更改是针对默认状态应用的。如果状态扩展了另一个状态,则更改是针对扩展状态应用的。
extend : string |
此属性包含此状态扩展的状态。
当状态扩展另一个状态时,它继承该状态的全部更改。
被扩展的状态被视为扩展状态指定更改的基础状态。
name : string |
此属性保留状态的名称。
每个状态在其项中应该有唯一的名称。
when : bool |
此属性保留状态应应用的时间。
应设置为当您想要应用状态时评估为 true
的表达式。例如,以下 Rectangle 在 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 } } }
如果一组中的多个状态具有同时评估为 true
的 when
子句,则将应用第一个匹配的状态。例如,在以下片段中,当 sharedCondition 变为 true
时,总是选择 state1
而不是 state2
。
© 2024 Qt公司有限。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可版本1.3的条款提供的。Qt及其相应商标是芬兰和/或世界各地的Qt公司的商标。所有其他商标均为其各自所有者的财产。