在使用QSortFilterProxyModel过滤QTableView后保留选择

Keep the selection after filtering a QTableView with a QSortFilterProxyModel

本文关键字:保留 选择 QTableView 过滤 QSortFilterProxyModel      更新时间:2023-10-16

我创建了一个链接到另一个模型的QTableViewQSortFilterProxyModel。在QTableView下(在GUI中)有一个QLineEdit用于"搜索"视图中的元素。

我的想法是在QLineEdit中编写我正在寻找的内容,并让视图仅显示匹配的元素。过滤后,我想选择相关项目,然后清除QLineEdit,以便在完整视图返回。一切正常,但选中的项目将被过滤,也将失去选择,因为无效。

我该如何解决这个问题?

为什么不在过滤之前记住选中的行,然后在过滤完成后再恢复呢?

我想您可以直接使用QItemSelectionModel

过滤前使用QItemSelectionModel::selectedRows(),过滤后使用QItemSelectionModel::select()选择行。

我知道这个帖子很老了,但我想我应该留下评论给其他遇到类似问题的人。

从你写的看起来问题是在QTableView失去选择,当你清理你的QLineEdit内容。如果您在行编辑的editingFinished()或textChanged()信号中开始'搜索'例程,您可以在更改QLineEdit之前断开连接,然后重新连接回来。或者使用布尔标志,并且在打开过滤时不更改过滤。如果您将代码的简化版本与您所遇到的问题一起发布,那么回答您的问题将容易得多。