Qml中的状态State可以用来驱动界面,针对不同的状态显示不同的界面。
状态相关属性
- Item控件有一个state属性,字符串类型(默认字符串类型),来设置空间的状态。
- Item控件还有一个states的属性,保存该控件的所有状态值,类型是list<State>。
- State的属性
- name:状态的名称。
- when:布尔值,该值为true时使用该状态。
- changes:类型是list<Change>,保存应用状态的所有变化。可以使用PropertyChanges(修改对象的属性)。
程序实例
import QtQuick 2.0
Item {
anchors.fill: parent
Rectangle{
id:rect
width: 60
height: 60
//初始化状态值
state: "blueRect"
MouseArea{
id:mouse
anchors.fill: parent
}
//控件的状态值集合
states: [
//定义红色状态
State {
//设置名称
name: "redRect"
//设置条件
when: mouse.pressed
//状态对应的变化集合
changes:[
//属性变化
PropertyChanges {
target: rect
color:"red"
}
]
},
//定义蓝色状态
State {
name: "blueRect"
when: mouse.released
changes:[
PropertyChanges {
target: rect
color:"blue"
}
]
}
]
}
}
PropertyChanges属性
- target:指定改变的目标控件,然后就可以像在目标控件中一样设置其属性。
- restoreEntryValues:用来指定离开该状态时是否恢复到进入本状态的值,默认值为true;如果设置为false,则在该状态下的修改时持久的。
- explicit:修改控件属性的状态,默认是false,即时绑定关系;如果设置为true,则是一次性赋值行为。