QT开发中文网

在使用 QSortFilterProxyModel 过滤 QTableView 数据的过程中,双击修改时过滤数据时,显示的是源模型的当前行数据而不是过滤后的数据。C++

代码如下:

void MyTableView::doubleClicked(const QModelIndex& index)
{
    QModelIndex sourceIndex = proxyModel()->mapToSource(index);
    QAbstractItemModel* sourceModel = proxyModel()->sourceModel();
    if (sourceModel->rowCount(sourceIndex) > 0) {
        sourceIndex = sourceModel->index(sourceIndex.row(), index.column(), sourceIndex.parent());
    }
    QTableView::doubleClicked(sourceIndex);
}

在双击事件中,首先将当前选中的代理模型的索引映射回源模型的索引,然后判断源模型的当前行数是否大于0,如果是,则表示当前选中的是过滤后的数据,直接使用该索引;否则,表示当前选中的是源模型中的数据,需要重新构建一个源模型的索引。最后调用基类的 doubleClicked 函数处理修改操作。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1016

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?