PropertyChanges QML Type

状態の新しいプロパティバインディングまたは値を記述します。詳細...

Import Statement: import QtQuick

プロパティ

詳細説明

PropertyChanges は、State のプロパティ値またはバインディングを定義するために使用されます。 これにより、アイテムがステート間で変更されたときに、そのアイテムのプロパティ値を変更できるようになります。

PropertyChanges オブジェクトを作成するには、ローカル プロパティにバインドするように、ターゲット アイテムのプロパティにバインドします。こうすることで、新しいプロパティ値やバインディングを定義することができます。例えば

import QtQuick

Item {
    id: container
    width: 300; height: 300

    Rectangle {
        id: rect
        width: 100; height: 100
        color: "red"

        MouseArea {
           id: mouseArea
           anchors.fill: parent
        }

        states: State {
           name: "resized"; when: mouseArea.pressed
           PropertyChanges {
               rect {
                   color: "blue"
                   height: container.height
               }
           }
        }
    }
}

マウスが押されると、Rectangleリサイズ状態に変わります。この状態では、PropertyChanges オブジェクトは矩形の色を青に設定し、height の値をcontainer.height の値に設定します。

これは自動的に、rect.heightリサイズ状態のcontainer.height にバインドすることに注意してください。プロパティ・バインディングを確立せず、状態変更時に高さをcontainer.height の値に設定するだけの場合は、explicit プロパティをtrue に設定します。

PropertyChanges オブジェクトは、オブジェクトのデフォルトシグナルハンドラをオーバーライドして、新しい状態に固有のシグナルハンドラを実装することもできます:

PropertyChanges {
    myMouseArea.onClicked: doSomethingDifferent()
}

AnchorChanges 注: PropertyChanges は、アンカー・マージンを変更するためには使用できるが、他のアンカー値を変更するためには使用できない。同様に、Item'のparent 値を変更するには、代わりにParentChange を使用します。

プロパティ値のリセット

undefined 、ある状態のプロパティ値をリセットすることができます。次の例では、myTextwiderText状態に変わると、width プロパティがリセットされ、テキストが自然な幅になり、文字列全体が1行に表示されます。

Rectangle {
    width: 300; height: 200

    Text {
        id: myText
        width: 50
        wrapMode: Text.WordWrap
        text: "a text string that is longer than 50 pixels"

        states: State {
            name: "widerText"
            PropertyChanges { myText.width: undefined }
        }
    }

    MouseArea {
        anchors.fill: parent
        onClicked: myText.state = "widerText"
    }
}

トランジションでの即時プロパティ変更

トランジションが状態変化のアニメーションに使用される場合、プロパティは現在の状態の値から新しい状態で定義された値(PropertyChangesオブジェクトで定義された値)にアニメーションされます。しかし、アニメーションなしで、Transition の間にプロパティ値を直ちに設定することが望ましい場合もあります。このような場合、PropertyAction タイプを使用して、プロパティを直ちに強制的に変更することができます。

詳しくはPropertyAction のドキュメントを参照してください。

注: Itemvisible プロパティとenabled プロパティは、PropertyChanges の他のプロパティと全く同じ動作をするわけではありません。こ れ ら のプ ロ パテ ィ は親の状態を通 じ て暗黙的に変更で き る ので、 すべての PropertyChanges で明示的に設定す る 必要があ り ます。項目は、その親のいずれかが有効または可視でない場合でも、有効/可視にはなりません。

注: Qt 5 との後方互換性のために、target プロパティと、ID のないプレーンなプロパティ名を使用して PropertyChanges を指定することもできます。例:PropertyChanges { target: myItem; x: 15 }target の代わりに ID を持つフォームを推奨します。ファイルをQt Design Studio で編集する場合は、target を使用する必要があります。Qt Design Studioでは、扱えるファイルにさらに多くの制限があることに注意してください。

States の例Qt Quick StatesQt Qmlも参照してください

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

explicit : bool

explicitをtrueに設定すると、潜在的なバインディングは、ステートが入力された時に発生する一度限りの割り当てとして解釈されます。

次の例では、explicit を追加することで、myItem.widthparent.width にバインドされるのを防いでいます。その代わりに、状態が変化した時点でparent.width の値が割り当てられます。

PropertyChanges {
    target: myItem
    explicit: true
    width: parent.width
}

デフォルトでは、explicit は false です。


restoreEntryValues : bool

このプロパティは、状態を離れるときに以前の値を復元するかどうかを保持する。

デフォルト値はtrue である。この値をfalse に設定すると、プロパティ値に永続的な影響を与える一時的な状態が作成される。


target : QtObject

このプロパティは、変更するプロパティを含むオブジェクトを保持します。

注意: 通常、このプロパティを使用する必要はありません。このプロパティは、Qt 5 との互換性とQt Design Studio との互換性のためだけに存在します。


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