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

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.lryc.cn/news/441494.html

相关文章:

  • 【Python】 报错Can‘t find model ‘en_core_web_md‘
  • 每天五分钟深度学习框架pytorch:pytorch中已经定义好的损失函数
  • dedecms(四种webshell姿势)、aspcms webshell漏洞复现
  • 【STM32系统】基于STM32设计的智能垃圾桶(语音、颜色识别、称重、光强、烟雾、人体识别、步进电机、水泵)——文末资料下载
  • GPT代码记录
  • powerbi
  • 【Unity】检测鼠标点击位置是否有2D对象
  • Python学习——【2.1】if语句相关语法
  • 机器学习--K-Means
  • 模型训练时CPU和GPU大幅度波动——可能是数据的读入拖后腿
  • keep-alive的应用场景
  • 【C++ Primer Plus习题】16.9
  • Java入门:09.Java中三大特性(封装、继承、多态)02
  • AI为云游戏带来的革新及解决方案:深度技术剖析与未来展望
  • 集合是什么
  • JavaDS —— 图
  • 魅思-视频管理系统 getOrderStatus SQL注入漏洞复现
  • SOME/IP通信协议在汽车业务具体示例
  • jupyter notebook添加环境/添加内核
  • 建模杂谈系列256 规则函数化改造
  • python实现冒泡排序的算法
  • 爱玩游戏的弟弟,被人投资了100万
  • Pandas_数据结构详解
  • Leetcode 3287. Find the Maximum Sequence Value of Array
  • python 山峦图
  • Open3D:3D数据处理与可视化的强大工具
  • YOLOv8改进系列,YOLOv8的Neck替换成AFPN(CVPR 2023)
  • BitLocker硬盘加密的详细教程分享
  • YOLOv8的GPU环境搭建方法
  • JZ2440下载后设置NAND启动文件系统