VS2010+QT5编程之QTableView同时删除选中的多行
来源:互联网 发布:淘宝大韩泡泡糖是高仿 编辑:程序博客网 时间:2024/06/06 09:37
QTableView同时删除选中的多行,对于新手来说是一个容易出现错误的地方。
下面是一段错误的代码:
QModelIndexList indexList = tableview->selectionModel()->selectedIndexes();QModelIndex index;foreach(index,indexList){ view_model->removeRow(index.row()); }
错误现象:如果此tableview有多行多列,执行完后会发现删除的结果不同于我们预想。
错误分析:假设是一个五行四列的tableview,而你选中了第二和第四整行,你会发现indexList其实有八个元素(一个格子一个元素,而不是一行一个元素),执行removeRow操作实际上是重复删除某一行,而且第一次执行removeRow后view_model会发生变化,所以第一次执行后的再次执行都是错误的。
正确代码:
this->setSelectionBehavior(QAbstractItemView::SelectRows); //选择整行 //基于自写的派生于QTableView的TableView
void TableView::deleteItem(){ QModelIndexList indexList1 = this->selectionModel()->selectedIndexes(); while (!indexList1.isEmpty()) { QModelIndexList indexList = deleteRepeatList(indexList1); QModelIndex index = indexList.first(); model->removeRow(index.row()); indexList1 = this->selectionModel()->selectedIndexes(); }}
其中deleteRepeatList函数代码:
QModelIndexList TableView::deleteRepeatList(QModelIndexList indexList){ QModelIndex index,newIndex; QModelIndexList newIndexList; foreach(index,indexList) { if (newIndex.row() != index.row()) { newIndex = index; newIndexList.append(newIndex); } } return newIndexList;}
0 0
- VS2010+QT5编程之QTableView同时删除选中的多行
- QTableView实现同时删除被选中的多行记录
- QTableView实现同时删除被选中的多行记录
- VS2010+QT5编程之QTableView数字排序
- VS2010+QT5编程之为QTableView添加右键菜单
- VS2010+QT5编程之巧妙运用定时器解决QTreeView/QTableView等QAbstractItemView实时条目统计问题
- VS2010+QT5编程之QString与char*的相互转换
- Qt qtableview 多行选中,获取行号
- QTableView 得到选中行
- VS2010+Qt5.1编程
- QT QTableView 获取单击选中行的内容
- QT QTableView 获取单击选中行的内容
- VS2010+QT5编程之用QTabWidget写标签页(页码)的注意事项
- 机房收费系统遇到的问题(一) datagridview一次性移除多行选中数据,同时删除数据库数据
- VS2010+QT5编程之setWindowIcon报错解决方案
- VS2010/VS2012/VS2013+QT5编程之开发环境配置
- GridView控件与CheckBox结合,实现全选功能,同时实现删除选中的多行数据
- GridView控件与CheckBox结合,实现全选功能,同时实现删除选中的多行数据 .
- spring数据源配置
- 在web项目下引入hibernate配置文件
- Leetcode[26]-Remove Duplicates from Sorted Array
- poj 3169 spfa 差分约束
- MySQ查看和设置字符集,数据库,表,字段
- VS2010+QT5编程之QTableView同时删除选中的多行
- NOSQL----memcached(临时键值存储数据库)在centos下的安装与启动
- Android studio导入项目(出现的问题)
- 一元回归分析,线性相关
- JS中的Prototype
- UIWindow & UIWindowLevel
- 数据挖掘10大算法(6)-K最近邻(KNN)算法的实现(java和python版)
- 将svn服务注册成windows服务
- 安卓LISTVIEW