在QSortFilterProxyModel中更改数据表示结构

时间:2017-10-26 11:19:15

标签: c++ qt qsortfilterproxymodel

我有自定义QSortFilterProxyModel类,我正在使用QFileSystemModel并在QTreeView中显示它。我需要执行以下操作:如果存在具有相同名称的文件夹和文件(忽略文件扩展名),则必须将文件夹中的文件停靠到此文件。例如,我有Creatures.txt文件和包含两个txt文件的Creatures文件夹。我想从最终视图隐藏它并显示如第二张图片所示。

enter image description here

enter image description here

据我所知,QSortFilterProxyModel仅用于过滤和排序,不用于更改数据结构。我还需要在视口中创建/拖放文件。

1 个答案:

答案 0 :(得分:0)

这样做很棘手,因为没有标志来切换模型中项目的可见性。

相反,您可以创建自己的代理模型,省略这些项目。 (这意味着要适当地重新实现rowCount(),data(),flags()等。)

但是如果改变视图方面的可见性是好的,作为一种解决方法,您可能更容易使用QTreeView :: setRowHidden()。

编辑:或许覆盖QSortFilterProxyModel :: filterAcceptsRow()更容易。