可能是因为您在双击修改时获取的是 QTableView 的当前行数据,而不是过滤后的数据。可以尝试在修改前先通过 QSortFilterProxyModel::mapToSource() 函数将 QTableView 中的索引映射到源模型中的索引,然后再通过源模型获取数据。
示例代码:
QModelIndex index = tableView->currentIndex();
QModelIndex sourceIndex = proxyModel->mapToSource(index);
QVariant data = sourceModel->data(sourceIndex, role);
其中,tableView 是您的 QTableView 对象,proxyModel 是使用的 QSortFilterProxyModel 实例,sourceModel 是 QSortFilterProxyModel 的源模型,role 是数据角色(如 Qt::DisplayRole)。
这样可以确保获取的数据是过滤后的数据而非源模型中的原始数据。