2016-03-04 92 views
1

QML State類型的when屬性可用於控制何時應通過布爾表達式應用狀態。State.when vs Item.state屬性

當我設置的QML的state財產Item明確,似乎覆蓋所有狀態對象的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表達式確定的。當按下MouseArea時,狀態變爲「顯式狀態」。在釋放鼠標按鈕後,狀態變爲默認狀態(「」)。看來when狀態評估已停止。

有什麼辦法可以「恢復」到「何時」狀態評估?

+0

也許像'onReleased:item.state = item.state'? – skypjack

+0

不,不幸的是,根本不會改變狀態。 – Florian

回答

1

上狀態的when性能評價:

  • 當一組狀態中的初始創建
  • 當一個狀態的when被改變(無論是通過被設置時,或者當任何的屬性,這些屬性的一個when綁定依賴於變化)

所以不,你不能真正「重置」它。如果你能避免它,我建議不要混合這兩種方法。