我想声明考虑到以前状态的州。是否可以在PropertyChanges
/ StateChangeScript
?
Item {
states: [
State {
name: "s1"
StateChangeScript {
if (previous_state == "s2")
doSomething();
else
doSomethingElse();
}
},
State {
name: "s2"
},
State {
name: "s3"
}
]
}
答案 0 :(得分:1)
在研究这个问题时,我发现了另一个解决方案,可能会让那些任性的Google员工在这个问题上磕磕绊绊。
另一个陈述的答案要求您为每个州都定义一个过渡,这对于具有多个州的大型程序来说变得不方便。
此外,至少目前在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在第一次转换后是正确的,而不是第二次转换。
答案 1 :(得分:0)
正如@folibis建议的那样,您可以使用属性来保存以前的状态。还有另一种方法可以使用ScriptAction:
for (int i = 0; i < fList.size(); i++) {
if (fList.get(i).containsKey(fileName)) {
fnameWithCount = getMap(fList,fileName);
}
}