2016-03-04 104 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绑定依赖于变化)

所以不,你不能真正“重置”它。如果你能避免它,我建议不要混合这两种方法。