QMLを学びながら、私は問題を見つけたが、私は相互に依存するプロパティを持っている。QMLで相互に依存するプロパティの双方向バインディング
など。ユーザはスライダで値を設定したり、テキスト入力で値を入力することができます。
スライダを動かしながら、テキスト入力のテキストを更新する必要がありますが、テキスト入力に値を入力するときは、スライダの位置を調整する必要があります。
ここでは、スライダのx値とtextinputのテキストという2つのプロパティがあります。私はそれらを同じフォーマット(例えば、パーセント)に変換し、その逆も同様に更新する必要があります。 2つのバインディングを設定すると、バインディングループが発生しますが、これはおそらく良いことではありません。
私はこれが非常に一般的な問題だと思うので、解決するためのいくつかの "ゴールドスタンダード"があると確信しています。しかし、私は適切な解決策を見つけることができません。
唯一のやり方は、バインディングを使用するのではなく、シグナルを処理することです。値が手動で変更されている(C++でセッターを上書きできない場合)。
これですべては可能ですか?
おはよう!
-m-
EDIT: スライダの値をパーセント値に条件付きでバインドして試しました。
オブジェクトhandle
は、スライダー上のマーカーです。ドラッグすることができるのは、handleArea
のMouseAreaです。
Binding {
target: root
property: 'percent'
value: handle.x/handleBar.width
when: handleArea.drag.active
}
Binding {
target: handle
property: 'x'
value: root.percent * handleBar.width
when: !handleArea.drag.active
}
これは機能します。しかし、それは良いスタイルですか?