0%

State属性说明

相关控件:StateGroup

State状态是一组从默认配置批处理的变化。所有项目都可以通过将状态项添加到states属性来定义新状态,以允许项在不同配置之间切换。

本文: https://www.lovejia.win/blog/article/State.html
参考原文:http://doc.qt.io/qt-5/qml-qtquick-state.html
参考译文:http://blog.csdn.net/xuancailinggan/article/details/50913720

属性说明

changes : list

此属性保存要应用于此状态的更改
默认情况下,这些更改将应用于默认状态。如果状态扩展另一个状态,则针对正在扩展的状态应用改变。

extend : string

此属性保持此状态延伸的状态。
当状态扩展另一个状态时,它继承该状态的所有更改。
被扩展的状态被视为关于由扩展状态指定的改变的基本状态。

name : string

此属性保存状态的名称。
每个状态在其项目中应具有唯一的名称。

when : bool

此属性在应用状态时成立。
这应该设置为一个表达式,该表达式计算到true您希望应用状态的时间。

功能简述

State是一组从默认配置批处理的变化。
所有项目都有默认状态,定义对象和属性值的默认配置。可以通过将状态项添加到states属性来定义新状态,以允许项在不同配置之间切换。这些配置可以例如用于应用不同的属性值集合或执行不同的脚本。

以下示例显示单个矩形。在默认状态下,矩形被着色为黑色。在“点击”状态下,PropertyChanges对象将矩形的颜色更改为红色。在MouseArea中单击可以在默认状态和“已点击”状态之间切换矩形的状态,从而在黑色和红色之间切换矩形的颜色:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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" }
}
]
}

注意:请注意,使用空字符串(“”)引用默认状态。状态通常与转换一起使用,以在状态发生变化时提供动画。
不允许从同一对象的另一个状态中设置对象的状态。

下面示例矩形进出“隐藏”状态的改变时的鼠标区域被压:

1
2
3
4
5
6
7
8
9
10
11
12
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:

1
2
3
4
5
6
7
Item {
states: [
State { name: "state1"; when: sharedCondition },
State { name: "state2"; when: sharedCondition }
]
// ...
}
------本文结束    感谢阅读------
你打赏你的,我分享我的!