2

谈到与 Qt 相比的 WPF 绑定,是否有人尝试通过以下方式实现 WPF 中实现的功能:

<ComboBox ItemsSource="{Binding Items}" SelectedValue="{Binding SelectedItem}" />

以下是:

  1. 项目集合(模型的成员)绑定为组合下拉的来源。
  2. 然后组合选择绑定到 SelectedItem(模型的成员)。

在 Qt 中:

  1. QComboBox.setModel() 相对容易实现。
  2. 有点困难,因为它是双向绑定。视图到模型的更改可以通过信号 (QComboBox.activatedIndexChanged) 完成。模型到视图的更改也可以通过信号完成(为了遵循模型视图分离,您需要向模型添加信号,每当模型上的 SelectedItemIndex 发生更改时发出它,并在 Widget 端连接到该信号以进行调用QComboBox.setCurrentIndex())。

所有这些似乎都是非常普遍的事情,可以在单独的绑定助手库中完成。例如,我现在在我的 QtJambi 代码中有这样的内容:

ComboBoxBind bind = new ComboBoxBind(comboBox);
bind.selectedIndex(model, "SelectedItemIndex").items(model.getItems());

这里 QComboBox 的 currentIndex 绑定到模型的 SelectedItemIndex 成员(具有相应的 get/set 方法)。所以我可以在模型上调用 setSelectedItemIndex 或在 UI 中更改选择 - 模型将与视图不同步。

问题是:有人知道 Binding 库是否已经存在吗?有没有人试图创造类似的东西?

抱歉,可能是我遗漏了什么。我在 WPF 方面非常有经验,但现在才开始使用 Qt 并使用 QtJambi 开发 UI。欢迎任何意见/想法!

这个问题与这个问题有关:Qt 等效于 .NET 数据绑定?,但我认为根本没有回答问题。至少它没有在 Qt 中提供任何类似 WPF 的绑定示例。

4

0 回答 0