State.when 对比 Item.state 属性
State.when vs Item.state property
QML State
类型的 when
属性 可用于控制何时应通过布尔表达式应用状态。
当我明确设置 QML Item
的 state
属性 时,它似乎覆盖了所有状态对象的 when
属性,如下面的代码所示:
Item {
id: item
anchors.fill: parent
states: [
State {
name: "when state"
when: 1 === 1
},
State {
name: "explicit state"
}
]
onStateChanged: console.log("state = " + state)
MouseArea {
anchors.fill: parent
onPressed: item.state = "explicit state"
onReleased: item.state = ""
}
}
item
的初始状态是 "when state",因为它由 when
表达式确定。当按下 MouseArea
时,状态变为 "explicit state"。释放鼠标按钮后,状态变为默认状态 ("")。 when
状态评估似乎已停止。
有什么方法可以"recover" 以某种方式"when" 状态评估吗?
评估状态的 when
属性:
- 最初创建一组状态时
- 当一个状态的
when
被改变时(通过设置,或者当 when
绑定之一所依赖的任何属性改变时)
所以不,你不能真的 "reset" 它。如果可以避免,我建议不要混合使用这两种方法。
QML State
类型的 when
属性 可用于控制何时应通过布尔表达式应用状态。
当我明确设置 QML Item
的 state
属性 时,它似乎覆盖了所有状态对象的 when
属性,如下面的代码所示:
Item {
id: item
anchors.fill: parent
states: [
State {
name: "when state"
when: 1 === 1
},
State {
name: "explicit state"
}
]
onStateChanged: console.log("state = " + state)
MouseArea {
anchors.fill: parent
onPressed: item.state = "explicit state"
onReleased: item.state = ""
}
}
item
的初始状态是 "when state",因为它由 when
表达式确定。当按下 MouseArea
时,状态变为 "explicit state"。释放鼠标按钮后,状态变为默认状态 ("")。 when
状态评估似乎已停止。
有什么方法可以"recover" 以某种方式"when" 状态评估吗?
评估状态的 when
属性:
- 最初创建一组状态时
- 当一个状态的
when
被改变时(通过设置,或者当when
绑定之一所依赖的任何属性改变时)
所以不,你不能真的 "reset" 它。如果可以避免,我建议不要混合使用这两种方法。