微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

QSortFilterProxyModel过滤时如何在QTableView中保留选择

如何解决QSortFilterProxyModel过滤时如何在QTableView中保留选择

我有一个带有多个过滤小部件(复选框和组合框)的多选QTableView。在我了解QSortFilterProxyModel之前,我有自己的自定义方法apply_filters,该方法将从过滤器小部件读取值,并通过使用setRowHidden的{​​{1}}方法隐藏行来进行过滤。通过这种方法,我可以应用过滤器来选择一些行,然后应用其他过滤器来选择更多行,而我的第一个选择仍然被记住。

切换到自定义QTableView后,此方法不再起作用。如果我选择了一些行然后更改了过滤器,它将仅选择应用新过滤器后仍可见的行。是因为现在其他行实际上已经从QTableView中消失了(而不仅仅是像以前一样隐藏了)?如果是这样,是否有一种“ qt-right”方法可以解决此问题,或者我是否需要提出自己的解决方案,可能需要在应用过滤器之前存储选择并在清除过滤器后重新选择项目?

要重新创建问题,请运行以下示例,选择第2行和第3行。然后转到行编辑。当您键入“ A”时,所有内容仍然存在,当您键入另一个“ A”时,第4行被过滤掉,但是2和3仍然可见并被选中。另一个“ A”和第3行被过滤掉,但第2行仍处于选中状态。退格键和第3行再次可见,但不再选择。

这是一个简单的示例来演示此问题。我知道在这种特殊情况下,我可以使用setFilterRegExp。

我使用的是Python 3.7.5和pyside2 5.13.0

QSortFilterProxyModel

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。