QTableWidget插入行解决最后一行异常情况
问题描述
先引用《Qt5.9C++开发指南》书P117页最下方关于insertRow()函数的一段描述。
在行号为row的行前插入一行,如果row等于或大于总行数,则在表格最后一行添加一行。
这里的行号存在一定问题,行号如果指代tableWidget自己标注的从1开始的行号的话,该描述便存在错误。当我进行表格添加行操作并考虑到末尾行的特殊情况时,根据上述描述出现偏差,导致一次点击最后一行添加了两行。
具体代码如下:
//在当前行下方插入一行
curRow = ui->tableWidget4->currentRow();
if(curRow != ui->tableWidget4->rowCount()){//当不是最后一行时if(curRow == ui->tableWidget4->rowCount() - 1){//若为倒数第二行ui->tableWidget4->insertRow(curRow + 1); //在其下添加一行,即在最后一行上添加一行,但最后一行进行操作时是在末尾添加,因此先在末尾添加一行,使原来的最后一行变为倒数第二行,在该行基础上添加一行即在原来倒数第二行下;然后再删去末尾多添加的一行ui->tableWidget4->insertRow(curRow + 1);ui->tableWidget4->removeRow(curRow + 3);qDebug() << "1" << curRow;}else{//若为其他行ui->tableWidget4->insertRow(curRow + 1);qDebug() << "2";}
}
else{//当为最后一行时ui->tableWidget4->insertRow(curRow);qDebug() << "3";
}
测试发现,当在最后一行时加入两行,debug输出为1,4,如下图所示:
在倒数第二行插入,debug输出2:
在其他行,debug输出为2:
解决办法
先描述三个函数:
- currentRow():返回当前行,由于tableWidget是从0开始的,因此返回的是从0数的行数。
- rowCount():返回当前表中总共的行数,有几行就是几行,不减不加。
- insertRow(row):在行号(行号从1开始)为row的行下插入一行。
因此,就上述函数功能描述可知,上述插入行最后一行出现问题的原因在于,误解了currentRow的返回值和insertRow的加入位置。按照该思路对代码进行如下修改后,成功:
在当前行上方插入:
//不需要对是否为最后一行进行讨论,都是这个结果
curRow = ui->tableWidget->currentRow();
ui->tableWidget->insertRow(curRow);
在当前行下方插入:
//不需要对是否为最后一行进行讨论,都是这个结果
curRow = ui->tableWidget->currentRow();
ui->tableWidget->insertRow(curRow + 1);
QTableWidget插入行解决最后一行异常情况相关推荐
- hibernate插入Mysql数据库出现中文乱码情况从这5个方面解决
因为有了新电脑所以又要解决乱码问题,在网上找帖子很是头疼,还是自己总结一下比较好. hibernate插入Mysql数据库出现中文乱码情况从这几个方面解决:有了这几方面以后使用mysql的乱码问题就不 ...
- Poi操作Excel,保留格式的情况下插入行
集大成之作,看了好多文章才搞定的 POI shiftRows后合并单元格丢失的解决办法_悟达居士-CSDN博客 [java] POI shiftRows 移动后合并的单元格被拆分了_qq_216128 ...
- C#操作Excel之复制一行并插入下方(确保插入的新行与上一行格式相同)
一.普通的插入新行 如果上一行有合并单元格这样的格式存在,新插入的一行并不能保留这个格式 Range range = (Range)xSheet.Rows[row_index , Type.Missi ...
- 关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法
关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 参考文章: (1)关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 (2)https://www.cn ...
- 浅析网站流量出现异常情况应怎样解决?
网站浏览量一直都是评定网站优化效果的一个重要指标,因此,优化人员在工作中也需要不间断的展开网站访问量分析.根据网站流量的相关数据信息来分析用户浏览网站的规律性,并对这种规律性结合网站实际情况制定符合网 ...
- Mac安装软件时各种异常情况的解决方法
Mac安装软件时各种异常情况的解决方法 提示程序含有恶意代码或者已经打开所有来源还是提示扔到垃圾桶 在终端输入 xattr -r -d com.apple.quarantine 加上程序的App绝对路 ...
- 如何快速添加无线打印机,或解决无线打印机需要注意,脱机等异常情况.
搜索关键词,无线打印机,脱机,需要注意,添加无线打印机 同局域网下如何快速添加无线打印机,或解决无线打印机需要注意,脱机等异常情况. 前置条件,同局域网,win10,无线 打印机,打印机支持无线模式/ ...
- Python 解决一行代码分成多行及多行代码放在一行
一行代码分成多行 使用 目的:当某一行代码较长,可以增强程序的可读性 for k in range(N):pi += 1/pow(16,k)*(\4/(8*k+1) - 2/(8*k+4) - \1/ ...
- 【SQL语法基础】初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?
上一篇文章中,我们讲到了事务的四大特性 ACID,分别是原子性.一致性.隔离性和持久性,其中隔离性是事务的基本特性之一,它可以防止数据库在并发处理时出现数据不一致的情况.最严格的情况下,我们可以采用串 ...
最新文章
- 复习01统计学习方法(机器学习中的重要概念)---图片版
- OSChina 周日乱弹 ——身价上亿,然而找不到女朋友 你信么?
- Pywinauto 应用后端类型选择错误:AttributeError: ‘NoneType‘ object has no attribute ‘backend‘. 原因及解决办法
- CodeForces - 86D Powerful array(莫队)
- python中threading模块详解
- pb 哪里找到系统图标_建议收藏的7个高质量图标网站,一网打尽图标素材
- Emacs取消键值绑定
- handler更新ui线程的基本用法
- 跟CSDN客服反馈的交流
- MySQL:JDBC基础及连接数据库的方式
- 如何把pdf转换成ezd_怎么把pdf文档转换成word
- 增强版唐奇安通道策略
- 联想电脑无法调节屏幕亮度
- 微信公众号的Api 一些说明 关于 WeixinJSBridge API
- C语言提取字符对应的ASCAl,ascall码对照表(ASCII码表)
- 不越狱iPhone安装破解插件的应用商店
- 迪赛智慧数——柱状图(多色柱状图):十大高薪行业
- 【吴恩达机器学习笔记】1引言、单变量线性回归、线性代数回顾
- CA认证原理以及实现(下)
- java内变速折叠自行车,电动助力+内变速 小米骑记折叠自行车评测
热门文章
- 16个手绘水彩热带元素图案素材 16 Hand Drawn Watercolor Pattern
- 推荐一部关于母亲的西语电影
- 套用带标题行的表格样式_649.Excel技巧:如何利用表格样式快速美化表格?
- xilinx基础篇Ⅰ(1)ISE14.7软件安装
- Mysql分组排序取每组第一条(二种实现方式)
- vue3中全局导入bootstrap-icons
- RGB图像转换成HSV图像,HSV图像转换为RGB图像
- vue-router点击打开新的标签页的方法
- OPENGL中的glortho和glviewport
- java ldap 工具_通过定义LdapUtil工具类实现JAVA关于LDAP协议目录数据保存和删除等操作代码示例...