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 を持つフォームを推奨します。を使用してファイルを編集する場合は、target を使用する必要があります。 Qt Design Studio.注意 Qt Design Studioで編集する場合は、 のフォームを使う必要があるかもしれない。

Statesの例Qt Quick States、および Qt Qml.

Propertyドキュメント

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.


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