State QML Type

オブジェクトとプロパティの構成を定義します。詳細...

Import Statement: import QtQuick

プロパティ

詳細説明

状態とは、デフォルトの構成から一括して変更されたものです。

すべてのアイテムには、オブジェクトとプロパティ値のデフォルト構成を定義するデフォルト状態があります。新しい状態を定義するには、states プロパティに State アイテムを追加します。こ れ ら の構成は、 た と えば、 異な る プ ロ パテ ィ 値群を適用 し た り 異な る ス ク リ プ ト を実行 し た り す る ために用い ら れます。

以下の例では、Rectangle を 1 つ表示します。デフォルトの状態では、矩形は黒く着色されています。ク リ ッ ク さ れた」 状態では、PropertyChanges オブジ ェ ク ト は長方形の色を赤に変えます。MouseArea 内をクリックすると、矩形の状態がデフォルトの状態と「クリックされた」状態の間で切り替わり、矩形の色が黒と赤の間で切り替わります。

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" }
        }
    ]
}

デフォルトの状態は、空の文字列("")で参照されます。

ステートは一般的にトランジションと一緒に使用され、ステートの変更時にアニメーションを提供します。

注意: 同じオブジェクトの別のステート内からオブジェクトのステートを設定することはできません。

ステートの例Qt Quick ステートトランジション、および Qt Qml.

プロパティの説明

changes : list<Change> [default]

このプロパティは、このステートに対して適用する変更を保持します。

デフォルトでは、これらの変更はデフォルトの状態に対して適用されます。状態が他の状態を拡張する場合、変更は拡張される状態に対して適用されます。


extend : string

このプロパティは、この状態が拡張する状態を保持する。

状態が他の状態を拡張すると、その状態のすべての変更を継承します。

拡張される状態は、拡張する状態によって指定される変更に関してベース状態として扱われる。


name : string

このプロパティは状態の名前を保持する。

各状態は、その項目内で一意の名前を持つべきである。


when : bool

このプロパティは、状態を適用するタイミングを保持する。

状態を適用したい場合は、true と評価される式を設定する必要があります。例えば、以下のRectangle は、MouseArea が押されると、「hidden」状態になったり、「hidden」状態から外れたりする:

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 }
    }
}

グループ内の複数の状態が、同時にtrue と評価されるwhen 節を持つ場合、最初にマッチした状態が適用されます。たとえば、次のスニペットでは、sharedConditionがtrue になったとき、state2 よりもstate1 が常に選択される。

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

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.