gpt4 book ai didi

qt - Qml 项目状态 : previous state

转载 作者:行者123 更新时间:2023-12-02 01:29:30 25 4
gpt4 key购买 nike

我想声明考虑到先前状态的状态。是否可以在 PropertyChanges 中使用以前的状态名称?/StateChangeScript ?

Item {
states: [
State {
name: "s1"

StateChangeScript {
if (previous_state == "s2")
doSomething();
else
doSomethingElse();
}
},
State {
name: "s2"
},
State {
name: "s3"
}
]
}

最佳答案

在研究这个问题时,我发现了另一种解决方案,它可能有利于在这个线程上绊倒的任性 googler。

另一个陈述的答案要求您为您拥有的每个状态定义一个转换,这对于具有许多状态的大型程序来说变得不方便。

另外,至少目前在 qml 中,

onStateChanged: previousState = state

导致 previousState 持有当前状态,而不是前一个状态。

所以,我的解决方案:
//within main:
property string previous_state: ""
property string current_state: "default_state"

Transition{
PropertyAction {target: main; property: "previous_state"; value: main.current_state}
PropertyAction {target: main; property: "current_state"; value: main.state}
}

previous_state 将始终保持先前的状态,并且不需要您为您拥有的每个状态定义新的转换。

一个警告是您必须将 current_state 设置为任何默认状态,因此 previous_state 在第一个转换之后是正确的,而不是第二个转换。

关于qt - Qml 项目状态 : previous state,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34976948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com