Binding QML Type
プロパティ・バインディングを任意に作成できるようにします。詳細...
Import Statement: | import QtQml |
プロパティ
- delayed : bool
- property : string
- restoreMode : enumeration
- target : QtObject
- value : var
- when : bool
詳細説明
QMLでは、プロパティのバインディングは、異なるオブジェクトのプロパティ間の依存関係をもたらします。
アクセスできないプロパティへのバインド
あるオブジェクトのプロパティを、QMLで直接インスタンス化されていない 他のオブジェクトのプロパティにバインドする必要がある場合があります。このような場合、Binding タイプを使用することで、任意のオブジェクトのプロパティに任意の値をバインドすることができます。
例えば、"app.enteredText "プロパティをQMLにマッピングしているC++アプリケーショ ンでは、Bindingを使ってenteredTextプロパティを更新することができます。
TextEdit { id: myTextField; text: "Please type here..." } Binding { app.enteredText: myTextField.text }
text
が変更されると、C++ のプロパティenteredText
は自動的に更新されます。
条件付きバインディング
ある条件が満たされたときにプロパティの値を変更し、そうでないときはプロパティの値を変更しないようにしたい場合があります。多くの場合、直接バインディングでこれを行うことはできません。
例えば、以下のコードではマウスを離すと警告が表示されます。これはマウスが押されていないときにバインディングの値が未定義だからです。
// produces warning: "Unable to assign [undefined] to double value" value: if (mouse.pressed) mouse.mouseX
バインディング・タイプはこの警告を防ぐことができます。
Binding on value { when: mouse.pressed value: mouse.mouseX }
バインディング・タイプは、プロパティに以前に設定されたダイレクト・バインディングを復元します。
関連項目: Qt Qml.
プロパティ ドキュメント
delayed : bool |
このプロパティは、バインディングを遅延させるかどうかを保持します。
遅延バインディングは、ターゲットをすぐに更新せず、イベントキューがクリアされるまで待ちます。これは、最適化として使用したり、中間値が割り当てられるのを防ぐために使用することができます。
Binding { contactName.text.value: givenName + " " + familyName when: list.ListView.isCurrentItem delayed: true }
property : string |
更新されるプロパティ。
式の結果、値型のプロパティにアクセスすることになる場合、これはグループ・プロパティにすることができます。例えば
Item { id: item property rect rectangle: Qt.rect(0, 0, 200, 200) } Binding { target: item property: "rectangle.x" value: 100 }
バインディング・ターゲットを宣言的に指定できない場合にのみ、このプロパティを使用する必要があります。以下のコード・スニペットは、上記のバインディングと同等ですが、よりコンパクトです:
Binding { item.rectangle.x: 100 }
restoreMode : enumeration |
このプロパティは、バインディングが無効化されたときに元の値を復元するかどうか、またどのように復元するかを記述するために使用できます。
可能な値は
定数 | 説明 |
---|---|
Binding.RestoreNone | 元の値は全く復元されません。 |
Binding.RestoreBinding | 元の値は、それが別のバインディングであった場合、復元されます。この場合、古いバインディングが再び有効になります。 |
Binding.RestoreValue | バインディングではなくプレーンな値の場合、元の値が復元されます。 |
Binding.RestoreBindingOrValue | 元の値は常に復元されます。 |
デフォルト値はBinding.RestoreBindingOrValue
です。
注意: このプロパティは、以前のバージョンの Qt との後方互換性のために存在します。新しいコードでは使用しないでください。
target : QtObject |
更新するオブジェクト。バインディング・ターゲットがid
属性を持っていない場合(例えば、ターゲットがシングルトンの場合)、このプロパティを使用する必要があります。そうでない場合は、次の2つのコードは同等です:
Binding { contactName.text: name }
Binding { target: contactName property: "text" value: name }
前者はよりコンパクトですが、実行時にターゲット・オブジェクトやプロパティを置き換えることはできません。前者の方がはるかにコンパクトですが、実行時にターゲット・オブジェクトやプロパティを置き換えることはできません。
value : var |
ターゲット・オブジェクトとプロパティに設定する値。これは、定数(あまり便利ではありませんが)、またはバインド式にすることができます。
このプロパティを使う必要があるのは、バインド先を宣言的に指定できない場合だけです。そうでなければ、ターゲットに直接バインドすることができます。
when : bool |
このプロパティは、バインディングがアクティブなときに保持します。これは、バインディングをアクティブにしたいときにtrueと評価される式に設定する必要があります。
Binding { contactName.text: name when: list.ListView.isCurrentItem }
デフォルトでは、バインディングが非アクティブになると、以前に設定されたバインディングや値が復元されます。復元動作は、restoreMode プロパティを使用してカスタマイズできます。
restoreModeも参照してください 。
このドキュメントに含まれるコントリビューションの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。