使用QSortFilterProxymodel过滤QTableView后保持选择

发布于 2024-10-29 17:51:30 字数 303 浏览 0 评论 0原文

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

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

我该如何解决这个问题?

I created a QTableView linked to a QSortFilterProxyModel linked to another model.
Under the QTableView (in the GUI) there is a QLineEdit used for "searching" an element in the view.

My idea is to write in the QLineEdit what I'm looking for and let the view show only the matched elements. After filtering, I want to select the concerned item and then clean the QLineEdit for returning at the complete view.
Everything works but the selected item that will be filtered will also lose the selection because of the invalidation.

How can I solve this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

做个ˇ局外人 2024-11-05 17:51:30

为什么不记住过滤之前选定的行,然后在完成过滤后恢复它。

我想你可以直接使用QItemSelectionModel

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

我知道这个帖子已经很老了,但我想我应该为面临类似问题的其他人留下评论。

Why don't you remember the selected rows before the filtering and then just restore it when you're done with filtering.

You could use the QItemSelectionModel directly I'd imagine.

Use QItemSelectionModel::selectedRows() before filtering and select rows after filtering using QItemSelectionModel::select().

I know this thread is very old, but I thought I'd leave the comment for anybody else facing a similar problem.

少钕鈤記 2024-11-05 17:51:30

从您所写的内容来看,问题似乎出在清理 QLineEdit 内容时 QTableView 失去选择。如果您在行编辑的editingFinished()textChanged() 向您发出信号在更改 QLineEdit 之前可以断开与它们的连接然后再次重新连接。或者使用布尔标志,并且在打开时不更改过滤。如果您发布代码的简化版本以及您遇到的问题,那么回答您的问题会容易得多。

From what you wrote it looks like the problem is in the QTableView loosing selection when you're cleaning your QLineEdit content. If you're starting your 'search' routine in the line edit's editingFinished() or textChanged() signals you can disconnect from them before changing the QLineEdit and then reconnect back again. Or use a boolean flag and don't change filtering when it's on. It would be much easier to answer your question if you would post up a simplified version of your code with the problem you're having.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文