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 (将#修改为@)