问题描述

  先引用《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:

解决办法

先描述三个函数:

  1. currentRow():返回当前行,由于tableWidget是从0开始的,因此返回的是从0数的行数。
  2. rowCount():返回当前表中总共的行数,有几行就是几行,不减不加。
  3. insertRow(row):在行号(行号从1开始)为row的行下插入一行。

  因此,就上述函数功能描述可知,上述插入行最后一行出现问题的原因在于,误解了currentRow的返回值和insertRow的加入位置。按照该思路对代码进行如下修改后,成功:
在当前行上方插入

//不需要对是否为最后一行进行讨论,都是这个结果
curRow = ui->tableWidget->currentRow();
ui->tableWidget->insertRow(curRow);

在当前行下方插入

//不需要对是否为最后一行进行讨论,都是这个结果
curRow = ui->tableWidget->currentRow();
ui->tableWidget->insertRow(curRow + 1);

QTableWidget插入行解决最后一行异常情况相关推荐

  1. hibernate插入Mysql数据库出现中文乱码情况从这5个方面解决

    因为有了新电脑所以又要解决乱码问题,在网上找帖子很是头疼,还是自己总结一下比较好. hibernate插入Mysql数据库出现中文乱码情况从这几个方面解决:有了这几方面以后使用mysql的乱码问题就不 ...

  2. Poi操作Excel,保留格式的情况下插入行

    集大成之作,看了好多文章才搞定的 POI shiftRows后合并单元格丢失的解决办法_悟达居士-CSDN博客 [java] POI shiftRows 移动后合并的单元格被拆分了_qq_216128 ...

  3. C#操作Excel之复制一行并插入下方(确保插入的新行与上一行格式相同)

    一.普通的插入新行 如果上一行有合并单元格这样的格式存在,新插入的一行并不能保留这个格式 Range range = (Range)xSheet.Rows[row_index , Type.Missi ...

  4. 关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法

    关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 参考文章: (1)关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 (2)https://www.cn ...

  5. 浅析网站流量出现异常情况应怎样解决?

    网站浏览量一直都是评定网站优化效果的一个重要指标,因此,优化人员在工作中也需要不间断的展开网站访问量分析.根据网站流量的相关数据信息来分析用户浏览网站的规律性,并对这种规律性结合网站实际情况制定符合网 ...

  6. Mac安装软件时各种异常情况的解决方法

    Mac安装软件时各种异常情况的解决方法 提示程序含有恶意代码或者已经打开所有来源还是提示扔到垃圾桶 在终端输入 xattr -r -d com.apple.quarantine 加上程序的App绝对路 ...

  7. 如何快速添加无线打印机,或解决无线打印机需要注意,脱机等异常情况.

    搜索关键词,无线打印机,脱机,需要注意,添加无线打印机 同局域网下如何快速添加无线打印机,或解决无线打印机需要注意,脱机等异常情况. 前置条件,同局域网,win10,无线 打印机,打印机支持无线模式/ ...

  8. Python 解决一行代码分成多行及多行代码放在一行

    一行代码分成多行 使用 目的:当某一行代码较长,可以增强程序的可读性 for k in range(N):pi += 1/pow(16,k)*(\4/(8*k+1) - 2/(8*k+4) - \1/ ...

  9. 【SQL语法基础】初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?

    上一篇文章中,我们讲到了事务的四大特性 ACID,分别是原子性.一致性.隔离性和持久性,其中隔离性是事务的基本特性之一,它可以防止数据库在并发处理时出现数据不一致的情况.最严格的情况下,我们可以采用串 ...

最新文章

  1. 复习01统计学习方法(机器学习中的重要概念)---图片版
  2. OSChina 周日乱弹 ——身价上亿,然而找不到女朋友 你信么?
  3. Pywinauto 应用后端类型选择错误:AttributeError: ‘NoneType‘ object has no attribute ‘backend‘. 原因及解决办法
  4. CodeForces - 86D Powerful array(莫队)
  5. python中threading模块详解
  6. pb 哪里找到系统图标_建议收藏的7个高质量图标网站,一网打尽图标素材
  7. Emacs取消键值绑定
  8. handler更新ui线程的基本用法
  9. 跟CSDN客服反馈的交流
  10. MySQL:JDBC基础及连接数据库的方式
  11. 如何把pdf转换成ezd_怎么把pdf文档转换成word
  12. 增强版唐奇安通道策略
  13. 联想电脑无法调节屏幕亮度
  14. 微信公众号的Api 一些说明 关于 WeixinJSBridge API
  15. C语言提取字符对应的ASCAl,ascall码对照表(ASCII码表)
  16. 不越狱iPhone安装破解插件的应用商店
  17. 迪赛智慧数——柱状图(多色柱状图):十大高薪行业
  18. 【吴恩达机器学习笔记】1引言、单变量线性回归、线性代数回顾
  19. CA认证原理以及实现(下)
  20. java内变速折叠自行车,电动助力+内变速 小米骑记折叠自行车评测

热门文章

  1. 16个手绘水彩热带元素图案素材 16 Hand Drawn Watercolor Pattern
  2. 推荐一部关于母亲的西语电影
  3. 套用带标题行的表格样式_649.Excel技巧:如何利用表格样式快速美化表格?
  4. xilinx基础篇Ⅰ(1)ISE14.7软件安装
  5. Mysql分组排序取每组第一条(二种实现方式)
  6. vue3中全局导入bootstrap-icons
  7. RGB图像转换成HSV图像,HSV图像转换为RGB图像
  8. vue-router点击打开新的标签页的方法
  9. OPENGL中的glortho和glviewport
  10. java ldap 工具_通过定义LdapUtil工具类实现JAVA关于LDAP协议目录数据保存和删除等操作代码示例...