Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTreeView-对模型进行排序和筛选_C++_Qt - Fatal编程技术网

C++ QTreeView-对模型进行排序和筛选

C++ QTreeView-对模型进行排序和筛选,c++,qt,C++,Qt,我正在尝试创建一个QTreeView,其中显示一些已排序的信息。为此,我在视图和模型之间使用QSortFilterProxy模型 问题是我想将行数限制在前n行(排序后)。模型中的filter函数接收原始sourceRow,因此我无法使用它 我尝试链接两个QSortFilterProxyModel:第一个用于排序,第二个用于筛选。但第二个proxymodel(过滤)似乎没有收到排序的行 还有别的办法吗? 有人使用过这种技术(链接两个代理模型)吗 多谢各位 编辑: 我试过使用rowCount,但它不

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

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

我尝试链接两个QSortFilterProxyModel:第一个用于排序,第二个用于筛选。但第二个proxymodel(过滤)似乎没有收到排序的行

还有别的办法吗? 有人使用过这种技术(链接两个代理模型)吗

多谢各位

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


EDIT2:我查看了qt源代码,筛选是在排序之前完成的,因此在filterAcceptsRow()中我不知道任何排序顺序。

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


否则,您可以尝试链接模型。我不知道为什么它不起作用,但我自己从来没有尝试过类似的方法。

在尝试了一些过于复杂的方法来解决这个问题后,我对我的问题做了一个小小的尝试:在插入/删除一行后,我调用setRowHidden来隐藏前n行。 这不是最优雅的解决方案,是我的特殊需要,但我无法找到更好的替代方案

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


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

你有没有试着提出你的问题?