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 } } }
グループ内の複数の状態が、同時に `true ` と評価される `when ` 句を持っている場合、最初に一致した状態のみが適用されます。たとえば、次のスニペットでは、`sharedCondition` が `true` になったとき、`state2 ` ではなく、常に `state1 ` が選択されます。
Item { states: [ State { name: "state1"; when: sharedCondition }, State { name: "state2"; when: sharedCondition } ] // ... }
特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。