Ste*_*son 5 qt qt5 qsortfilterproxymodel
如何QSortFilterProxyModel使用a来过滤 a 中的行QTreeView而不是其子节点?
比方说,我要筛选其第一列文本是所有行Mammal,但让孩子行(例如Moose,Cat等)
如果在示例中模型包含:
Animals
Mammals
Moose
Dog
Cat
Mouse
Run Code Online (Sandbox Code Playgroud)
应用过滤器后,视图将如下所示:
Animals
Moose
Dog
Cat
Mouse
Run Code Online (Sandbox Code Playgroud)
这可以使用QSortFilterProxyModel? 如果没有,我当然愿意接受建议。但是从我已经用于其他任务的代理中完成它会很好。
在文档中有一个方法QSortFilterProxyModel::mapToSource。IMO 这是解决这个问题的最佳选择。我知道这是一个很遥远的事情,但结合起来filterAcceptsRow应该可行。
问题是它没有很好的记录。基类QAbstractProxyModel的文档表明您必须重新实现两个方法:mapFromSource和mapToSource。Qt 是一个开源项目,因此最好了解一下mapToSource其内部及其对应部分mapFromSource。如果我有时间,我会这样做并改进这个答案。