PropertyChanges QML Type
状態の新しいプロパティバインディングまたは値を記述します。詳細...
Import Statement: | import QtQuick |
プロパティ
- explicit : bool
- restoreEntryValues : bool
- target : QtObject
詳細説明
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
、ある状態のプロパティ値をリセットすることができます。次の例では、myText
がwiderText状態に変わると、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 のドキュメントを参照してください。
注: Item のvisible プロパティと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.width
がparent.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.