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