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 を持つフォームを推奨します。ファイルをQt Design Studio で編集する場合は、target を使用する必要があります。Qt Design Studioでは、扱えるファイルにさらに多くの制限があることに注意してください。
States の例、Qt Quick States、Qt Qmlも参照してください 。
プロパティのドキュメント
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 との互換性のためだけに存在します。
ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。