状态 QML 类型

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

导入声明import QtQuick

属性

详细描述

状态 是从默认配置中批处理的一组更改。

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

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

import QtQuick

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 快速状态过渡Qt Qml

属性文档

changes : list<Change> [默认值]

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

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


extend : string

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

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

被扩展的状态被视为扩展状态指定更改的基础状态。


name : string

此属性保留状态的名称。

每个状态在其项中应该有唯一的名称。


when : bool

此属性保留状态应应用的时间。

应设置为当您想要应用状态时评估为 true 的表达式。例如,以下 RectangleMouseArea 被按下时在“隐藏”状态之间切换

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 子句,则将应用第一个匹配的状态。例如,在以下片段中,当 sharedCondition 变为 true 时,总是选择 state1 而不是 state2

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

© 2024 Qt公司有限。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可版本1.3的条款提供的。Qt及其相应商标是芬兰和/或世界各地的Qt公司的商标。所有其他商标均为其各自所有者的财产。