国家的多个“时”条件

时间:2015-02-17 08:23:22

标签: qml state qt-quick

说我有以下状态:

State
{
    name: "red_state"
    when: color === "red"
},
State
{
    name: "blue_state"
    when: color === "blue"
},
State
{
    name: "square_state"
    when: shape === "square"
},
State
{
    name: "circle_state"
    when: shape === "circle"
},
State
{
   name: "blue_circle_state"
   when: color === "blue" && shape === "circle"
}

“blue_circle_state”永远不会被触发,为什么会这样?是否有更好的方法为一个国家提供若干条件?

1 个答案:

答案 0 :(得分:2)

State中为when设置多个条件没有任何问题,此处的问题是blue_statecircle_stateblue_circle_state都在评估在同一时间真实。 documentation about the when property of a State说:

  

如果组中的多个状态具有同时评估为true的when子句,则将应用第一个匹配状态。

因此,当颜色为蓝色且形状为圆形时,此处只有blue_state处于活动状态。

在您的情况下,在开始时移动更具体的blue_circle_state将解决您的问题,但您仍然无法同时激活多个州。

如果您想拥有更高级的状态机,可以查看The Declarative State Machine Framework