我有自定义QSortFilterProxyModel类,我正在使用QFileSystemModel并在QTreeView中显示它。我需要执行以下操作:如果存在具有相同名称的文件夹和文件(忽略文件扩展名),则必须将文件夹中的文件停靠到此文件。例如,我有Creatures.txt文件和包含两个txt文件的Creatures文件夹。我想从最终视图隐藏它并显示如第二张图片所示。
据我所知,QSortFilterProxyModel仅用于过滤和排序,不用于更改数据结构。我还需要在视口中创建/拖放文件。
答案 0 :(得分:0)
这样做很棘手,因为没有标志来切换模型中项目的可见性。
相反,您可以创建自己的代理模型,省略这些项目。 (这意味着要适当地重新实现rowCount(),data(),flags()等。)
但是如果改变视图方面的可见性是好的,作为一种解决方法,您可能更容易使用QTreeView :: setRowHidden()。
编辑:或许覆盖QSortFilterProxyModel :: filterAcceptsRow()更容易。