このページでは

C

State QML Type

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

Import Statement: import QtQuick
Since: Qt Quick Ultralite 1.0

プロパティ

詳細説明

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

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

以下の例では、Rectangle を 1 つ表示します。デフォルトの状態では、矩形は黒く着色されています。ク リ ッ ク さ れた」 状態では、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" }
        }
    ]
}

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

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

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

ステートの使用法アニメーションとトランジションステートとトランジションも参照してください

プロパティの説明

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 }
    ]
    // ...
}

特定の Qt ライセンスの下で利用可能です。
詳細はこちら。