System.Windows.Forms.BindingSource是否等效于QSortFilterProxyModel?

时间:2016-09-13 07:36:07

标签: winforms qt bindingsource qsortfilterproxymodel

来自Qt,在我看来,BindingSource类提供了相同的功能,并且打算以与Qt中的QSortFilterProxyModel相同的方式使用。

阅读When is it worth using a BindingSource?及其答案后:

  

过滤,排序而不更改记录本身的排序顺序(过滤/排序)

还有:

  

BindingSource可以充当另一个BindingSource的数据源

这些功能与QTortFilterProxyModel在Qt中提供的功能相同。

有Qt和Winforms经验的人能告诉我,我的理解是否正确,如果没有,使用BindingSource和QSortFilterProxyModel之间的最大区别是什么?

1 个答案:

答案 0 :(得分:1)

我不是winforms专家,但只是通过阅读它们,它们相似但不同。

所以这里是QSortFilterProxyModel的关键概念。这有多少适用于BindingSource或不同我不能告诉你太多。

  • Qt中的ProxyModel是一个在基本模型之上分层的抽象模型(看起来像这里有一个BindingSource)。虽然您无法为此添加控件等,因为它们就是:数据模型。您可以将此ProxyModel或仅一个普通模型附加到视图,此视图会关注要显示的控件(模型可以提供“提示”)。

  • SortFilterProxyModel也可以根据字符串对数据进行排序和过滤。您可以从中派生出来进行自定义排序/过滤。没有货币管理等。

  • Qt还鼓励这种方法在您需要时编写自己的ProxyModel(您也可以将多个ProxyModel层叠在一起)。 这与BindingSources的不同之处以及您可以自定义它们的数量我不知道

  • 更改通知可以通过Qt中的常用信号和插槽概念进行管理,但这里的责任在于ProxyModel下面的Model而不是ProxyModel。

结论:看起来他们有类似的概念,两者(意外地)支持排序和过滤(可能因为它只是一个常见的用例< / em>)但是他们所使用的模型 - 视图系统的基本概念看起来是不同的。

再次,这是没有任何或非常粗糙的winforms知识,也许其他人可以回答那个部分,然后你有一个很好的比较。