Qt と比較した WPF Binding について言えば、WPF で次の機能を実現しようとした人はいますか。
<ComboBox ItemsSource="{Binding Items}" SelectedValue="{Binding SelectedItem}" />
ここにある:
- コンボ ドロップダウンのソースとしてバインドされたアイテム コレクション (モデルのメンバー)。
- 次に、SelectedItem (モデルのメンバー) にバインドされたコンボ選択。
Qt の場合:
- QComboBox.setModel() によって比較的簡単に実現できます。
- 双方向バインディングなので少し難しいです。ビューからモデルへの変更はシグナル (QComboBox.activatedIndexChanged) で行うことができます。モデルからビューへの変更は、シグナルを介して行うこともできます (モデルとビューの分離に従うには、モデルにシグナルを追加し、モデルで SelectedItemIndex が変更されるたびにそれを発行し、ウィジェット側で呼び出しのためにそのシグナルに接続する必要があります)。 QComboBox.setCurrentIndex())。
これらはすべて非常に一般的なものであり、バインディング ヘルパーの別のライブラリで実行できます。たとえば、私は今 QtJambi コードに次のようなものを持っています:
ComboBoxBind bind = new ComboBoxBind(comboBox);
bind.selectedIndex(model, "SelectedItemIndex").items(model.getItems());
ここでの QComboBox の currentIndex は、モデルの SelectedItemIndex メンバーにバインドされます (対応する get/set メソッドを使用)。したがって、モデルで setSelectedItemIndex を呼び出したり、UI で選択を変更したりできます。モデルはビューと同期しません。
問題は、バインディング ライブラリが既に存在するかどうかを知っている人はいますか? 似たようなものを作ろうとした人はいますか?
申し訳ありませんが、何かが足りない可能性があります。私は WPF の経験が豊富ですが、Qt を使い始めたばかりで、現在 QtJambi で UI を開発しています。コメント/アイデアは大歓迎です!
この質問は次の質問に関連しています: Qt は .NET data binding と同等ですか? 、しかし、そこにある質問はまったく答えられていないと思います。少なくとも、Qt での WPF と同様のバインディングのサンプルは提供されていません。