使用QSortFilterProxyModel过滤QTreeView中的父行,但不使用子行



如何使用QSortFilterProxyModel来过滤QTreeView中的一行,而不是其子节点?

假设我想过滤第一列文本为Mammal的所有行,但保留子行(例如Moose, Cat等)

如果在示例中模型包含:

Animals
    Mammals
        Moose
        Dog
        Cat
        Mouse

,当过滤器被应用时,视图看起来像这样:

Animals
    Moose
    Dog
    Cat
    Mouse

可以使用QSortFilterProxyModel吗?如果没有,我当然愿意听取建议。但是从我已经用于其他任务的代理中执行它会很好。

在文档中有一个方法QSortFilterProxyModel::mapToSource。在我看来,这是解决这个问题的最佳人选。我知道这是一个很长的机会,但与filterAcceptsRow结合应该工作。

问题是它没有很好的文档。基类QAbstractProxyModel的文档说明您必须重新实现两个方法:mapFromSourcemapToSource。Qt是一个开源项目,所以最好先了解一下mapToSource及其对应的mapFromSource。如果我有时间的话,我会这样做,并改进这个答案。

相关内容

  • 没有找到相关文章

最新更新