【发布时间】:2015-09-08 21:35:26
【问题描述】:
我有一个显示项目的 QTreeView 和一个用于过滤的 QSortFilterProxyModel。 QTreeView 配置为 SingleSelection 和 SelectRows。
如果使用过滤器删除了选定的项目,则会选择下一个未过滤的项目。我想改变这种行为。我目前的想法是连接到 rowsAboutToBeRemoved() 并在所选项目被删除时清除选择。
connect(_ui.treeView->model(), &QAbstractItemModel::rowsAboutToBeRemoved,
[this] (const QModelIndex & parent, int start, int end) {//check and clear selection});
但是,QT 在触发 rowsAboutToBeRemoved() 信号之前将选择更改为下一项。所以我无法测试删除的项目是否是选定的项目。
如果项目被过滤,是否有更好的方法来清除选择?我更喜欢不涉及从 QTreeView 派生的解决方案。
【问题讨论】: