当前位置: 首页 > article >正文

QTableView使用QSortFilterProxyModel后行号错乱

在Qt中,当你使用QSortFilterProxyModelQTableView进行排序或过滤后,点击事件可能会返回一个不正确的行号,因为代理模型可能会改变数据的显示顺序。为了获取点击数据的真实行号和内容,你可以使用mapToSource()函数,它可以将代理模型中的索引映射回源模型中的索引。

以下是如何使用mapToSource()来获取真实行号和内容的步骤:

  1. QTableView中实现点击事件的槽函数。
  2. 在槽函数中,获取点击的代理模型索引。
  3. 使用mapToSource()将代理模型索引转换为源模型索引。
  4. 使用源模型索引来获取真实的行号和数据。

示例代码如下:

void TableView::cellClicked(const QModelIndex &proxyIndex) {
    if (!proxyIndex.isValid())
        return;

    // 将代理模型索引映射到源模型索引
    QModelIndex sourceIndex = proxyModel->mapToSource(proxyIndex);

    // 获取源模型中的真实行号
    int row = sourceIndex.row();

    // 使用源模型索引来获取数据
    QVariant data = sourceModel->data(sourceIndex);

    // 现在你可以使用真实的行号和数据了
    qDebug() << "Real row:" << row << "Data:" << data;
}

在这个例子中,cellClicked是一个槽函数,它在用户点击表格单元格时被调用。proxyModelQSortFilterProxyModel的实例,sourceModel是源模型。mapToSource()函数用于获取源模型中对应的索引,从而可以获取真实的行号和数据。

如果你需要在点击事件中区分左键和右键,你可以重写QTableViewmousePressEvent方法,并在其中检查点击的按钮类型。


http://www.kler.cn/news/317396.html

相关文章:

  • 深度学习经典模型解析
  • 基于SpringBoot+Vue+MySQL的教学资料管理系统
  • Web+Mysql——MyBatis
  • 简单的spring缓存 Cacheable学习
  • Rust 全局变量的最佳实践 lazy_static/OnceLock/Mutex/RwLock
  • 02 BlockChain-- ETH
  • 着色器ShaderMask
  • HTML、CSS
  • python机器学习足球数据建模与分析——数据预测与预测建模
  • 嵌入式综合实验平台-嵌入式综合实训实验箱
  • [Excel VBA]如何使用VBA按行拆分Excel工作表
  • PHP智慧教育新篇章优校管理系统小程序源码
  • uniapp常用声明周期
  • 【C++指南】inline内联函数详解
  • network request to https://registry.npmjs.org/xxx failed, reason: connect ETIM
  • Cesium影像纠偏:高德地图加载与坐标系纠偏技巧
  • 【机器学习(九)】分类和回归任务-多层感知机 (MLP) -Sentosa_DSML社区版
  • Github 2024-09-21Rust开源项目日报 Top10
  • Qt/C++ 了解NTFS文件系统,解析0x80 $Data属性,获取Run Lists数据列表
  • 仓颉编程语言4,遇到BUG求助
  • 数据中心里全速运行的处理器正在浪费能源
  • golang格式化输入输出
  • 【3D打印】使用simplify 3D切片更改Gcode手动断电续打、掉电、未打完继续打印、补救
  • Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2
  • 【Godot4.3】自定义数列类NumList
  • 【Qt | Qstring】Qstring详细介绍(字符串的添加、删除、修改、查询、截断、删除空白字符等)
  • Gitlab runner的使用示例(二):Maven + Docker 自动化构建与部署
  • 【游戏引擎】C++自制游戏引擎 Lunar Game Engine
  • 基于vue框架的宠物销售管理系统3m9h3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 微软开源GraphRAG的使用教程-使用自定义数据测试GraphRAG