C

状态 QML 类型

定义对象和属性的配置。 更多...

引入语句import QtQuick
自从Qt Quick Ultralite 1.0

属性Changes

详细说明More...

状态是一组来自默认配置的批量更改。

所有根项都有一个默认状态,该状态定义了对象和属性的默认配置。可以通过将 State 项添加到 states 属性来定义新状态,以便项目可以在不同的配置之间切换。这些配置可以用于应用不同的属性值集或执行不同的脚本。

以下示例显示一个单个 Rectangle。在默认状态下,矩形是黑色的。在“clicked”状态下,一个 PropertyChanges 对象将矩形的颜色更改为红色。在 MouseArea 内单击可将矩形的颜色在黑和红之间切换。

import QtQuick 2.15

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "black"

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onClicked: myRect.state == 'clicked' ? myRect.state = "" : myRect.state = 'clicked';
    }

    states: [
        State {
            name: "clicked"
            PropertyChanges { target: myRect; color: "red" }
        }
    ]
}

注意默认状态使用空字符串 ("") 来引用。

状态通常与 Transitions 一起使用,为状态变化提供动画。

注意:不允许从同一对象的另一个状态内部设置对象的状。

另请参阅使用状态动画和过渡、和 Qt Quick Ultralite 中的重要概念 - 状态、过渡和动画

属性文档

[默认] Changes : list<Change>

此属性包含应用于此状态的更改

默认情况下,这些更改应用于默认状态。如果状态扩展了另一个状态,则更改应用于被扩展的状态。


Extend : string

此属性包含此状态扩展的状态。

当一个状态扩展另一个状态时,它会继承该状态的全部更改。

正在扩展的状态在扩展状态指定的更改方面被视为基本状态。


name : string

此属性包含状态的名称。

每个状态在其项目内应具有唯一名称。


when : bool

此属性包含应应用状态的条件。

应将其设置为表达式,当您想要应用状态时,该表达式评估为true。例如,以下矩形鼠标区域按下时进入和退出“隐藏”状态。

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "red"

    MouseArea { id: mouseArea; anchors.fill: parent }

    states: State {
        name: "hidden"; when: mouseArea.pressed
        PropertyChanges { target: myRect; opacity: 0 }
    }
}

如果一组中的多个状态具有同时评估为truewhen子句,则只应用匹配的第一个状态。例如,在此片段中,当私有条件变为true时,总是选择state1而不是state2

Item {
    states: [
        State { name: "state1"; when: sharedCondition },
        State { name: "state2"; when: sharedCondition }
    ]
    // ...
}

在某些Qt许可证下提供。
了解更多信息。