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も参照してください 。
© 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.