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

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。