このページでは

C

State QML Type

オブジェクトおよびプロパティの設定を定義します。詳細...

Import Statement: import QtQuick
Since: Qt Quick Ultralite 1.0

プロパティ

詳細な説明

ステートとは、デフォルト設定からの変更をまとめてまとめたものです。

すべてのルート項目には、オブジェクトやプロパティ値のデフォルト設定を定義するデフォルト状態があります。states プロパティにState項目を追加することで新しい状態を定義し、項目が異なる設定間で切り替わるようにすることができます。これらの設定は、例えば、異なるプロパティ値のセットを適用したり、異なるスクリプトを実行したりするために使用できます。

次の例は、単一のRectangle を示しています。デフォルトの状態では、長方形は黒色です。「クリック」状態では、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」状態への切り替えと解除を行います:

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

グループ内の複数の状態において、when 句が同時にtrue と評価される場合、最初に一致した状態のみが適用されます。たとえば、次のスニペットでは、sharedCondition がtrue になった場合、state2 ではなく、常にstate1 が選択されます。

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

特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。