qt - 使用 QSortFilterProxyModel 过滤 QTreeView 中的父行而不是子行

标签 qt qt5 qsortfilterproxymodel

怎么可以QSortFilterProxyModel用于过滤 QTreeView 中的一行但不是它的子节点?

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

如果在示例中模型包含:

Animals
    Mammals
        Moose
        Dog
        Cat
        Mouse

应用过滤器后, View 将如下所示:
Animals
    Moose
    Dog
    Cat
    Mouse

这可以使用 QSortFilterProxyModel 来完成吗? ?如果没有,我当然愿意接受建议。但是从我已经用于其他任务的代理中完成它会很好。

最佳答案

在文档中有一个方法 QSortFilterProxyModel::mapToSource . IMO 这是解决这个问题的最佳人选。我知道这是一个远景,但结合 filterAcceptsRow它应该工作。

问题是它没有很好的记录。 base class QAbstractProxyModel 的文档说你必须重新实现两个方法:mapFromSourcemapToSource .
Qt 是一个开源项目,因此最好查看 mapToSource 的内部信息。及其对应物 mapFromSource .如果我有时间,我会这样做并改进这个答案。

关于qt - 使用 QSortFilterProxyModel 过滤 QTreeView 中的父行而不是子行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172405/

相关文章:

c++ - Qt 自定义窗口

c++ - Qt keyPressEvent 处理程序仅在按下 ctrl、alt 或 shift 键时使用react

android - 使用 gstreamer 在 android 上录制音频(使用 Qt5)

c++ - 在 Qt 插件类中读取自己的元数据

qt - 将 QSortFilterProxyModel 与树模型一起使用

c++ - 无法连接到 QML 仿真层(QML Puppet)

c++ - Qt定义类似于-D的变量

python - PySide2/QML 在给定根索引处过滤分层数据

python - PyQt QTableView非英文字符排序问题

Qt 上未加载 MySQL 驱动程序