このページでは

State QML Type

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

Import Statement: import QtQuick

プロパティ

詳細な説明

「状態」とは、デフォルトの設定からの変更をまとめてまとめたものです。

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

次の例では、単一のRectangle を示しています。デフォルトの状態では、長方形は黒色になっています。「clicked」の状態では、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" }
        }
    ]
}

デフォルトの状態は、空の文字列("")を使用して指定されることに注意してください。

状態は通常、状態の変化時にアニメーションを生成するためにトランジションと組み合わせて使用されます。

注: 同じオブジェクトの別の状態からそのオブジェクトの状態を設定することは 許可されていません。

「 States」の例、Qt Quick 「States」、「Transitions」、および Qt Qmlを参照してください。

プロパティのドキュメント

changes : list<Change> [default read-only]

このプロパティには、この状態に適用する変更内容が保持されます

デフォルトでは、これらの変更はデフォルトの状態に対して適用されます。状態が別の状態を継承している場合、変更は継承元の状態に対して適用されます。

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

© 2026 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.