首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTreeView -对模型进行排序和过滤

QTreeView -对模型进行排序和过滤
EN

Stack Overflow用户
提问于 2009-06-30 08:42:22
回答 2查看 3.4K关注 0票数 5

我正在尝试创建一个QTreeView来显示一些排序的信息。为此,我在视图和模型之间使用了QSortFilterProxyModel。

问题是我想把行数限制在前n行(排序后)。模型中的filter函数接收原始的sourceRow,所以我无法使用它。

我尝试链接两个QSortFilterProxyModel:第一个用于排序,第二个用于过滤。但是第二个代理模型(过滤)似乎没有接收排序的行。

有没有别的办法呢?有没有人使用过这种技术(2个代理模型的链接)并且有效?

谢谢

编辑:我尝试过rowCount,但它不起作用。我还尝试链接两个代理模型,但问题是视图调用它接收的模型的排序函数。因此,如果第一个代理排序,第二个筛选器排序,则将在筛选器模型上调用排序,并且不会对数据进行排序。

EDIT2:我查看了qt源代码,过滤是在排序之前完成的,所以在filterAcceptsRow()中,我不知道任何排序顺序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-02 14:19:51

在尝试了许多过于复杂的方法来解决这个问题之后,我为我的问题做了一个小技巧:在我插入/删除一行之后,我调用setRowHidden来隐藏前n行。这不是最优雅的解决方案,而且特别适合我的需求,但我找不到更好的替代方案。

我想提一下,在gtk上,因为过滤器和排序代理模型是分开的,所以这可以很容易地完成。

我仍然希望有人能提供一个更好的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2009-06-30 15:10:52

出于好奇,您是否尝试过重写rowCount方法并只返回25 (或者在您的例子中n是什么)?事情可能就这么简单。好吧,如果你总是至少有n个项目。

否则,您可以尝试链接模型。我不知道为什么它不能工作,但我自己从来没有尝试过这样的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1062478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档