QTableWidget中的currentRow的一个误区(currentRow是当前所选中的item的所在行)

自己想要实现一个功能:在QTableWidget表格中插入数据,希望是按照“顺序”插入(即越先插入的越占在上面的行数)。
然后我看见QTableWidget对象中有currentRow这个函数,粗略的看列下官方的解释,“返回一个当前item的行数”
在这里插入图片描述
然后我就迅速YY,当前item的行数?
因为我知道刚开始QTableWidget中一行都没有的时候,currentRow是-1(我自己实验看到的)
在这里插入图片描述
所以,我就顺势想着,随着行数不断地增多,currentRow应该是递增才对,一行都没有的时候是-1,新增一行之后就应该是0,增了两行之后就应该是currentRow=1。
然后我就有了如下代码:

#self.data_widget 是我的QTableWidget对象
#一行都没有的时候currentRow()返回-1,然后此时应该数据应该是插入第0行
#所以我惯性思维得出结论: 所有的行数应该都是 currentRow()返回值+1
self.data_widget.insertRow(self.data_widget.currentRow()+1)
#创建QTableWidgetItem实例
item_domain = QTableWidgetItem()
#给QTableWidgetItem添加内容
item_domain.setText("示例")
#将QTableWidgetItem添加到QTableWidget上
self.data_widget.setItem(self.data_widget.currentRow()+1, 0,item_domain)

然后运行的时候,我就出现了“灰常”奇怪地现象,如下:
在这里插入图片描述
本来应该顺序显示的,为啥最后显示的顺序乱七八糟?既不是顺序也不是倒序?
后来发现原来是自己对于currentRow这个函数理解出现了问题,currentRow为当前item的所在行,意思是当前所选中的Item是哪一行,则currentRow为哪一行。
根据实际情况的尝试,我发现当前item的行,其实就是你自己鼠标选中哪一个的哪一个item
在这里插入图片描述
接过此时打印:
在这里插入图片描述
但是这个currentItem不会一直保持为6,在鼠标没有点击其他Item的前提下,会随着Item位置的变动,而一直变动,相当于是固定在当前选中的Item的行这个属性。
在这里插入图片描述
在这里插入图片描述
有个特殊情况:
(刚开始不用鼠标点击Item的时候,相当于我没选中任何Item,这个情况有点特殊,这时候currentItem一直显示-1)
之所以出现乱起八早顺序的原因,在于我之前有些时候用鼠标随意点击了某些item导致的,致使currentItem出现改变。

知道了这一点后,我就该我的代码,并且这个时候我觉得倒序更合适,所以想办法实现了倒序效果。(倒序意思是越晚来的数据反而在越上面)
然后我就把
self.data_widget.currentRow()+1 替换成 0
相当于实现倒序效果。

#self.data_widget 是我的QTableWidget对象
#一行都没有的时候currentRow()返回-1,然后此时应该数据应该是插入第0行
#所以我惯性思维得出结论: 所有的行数应该都是 currentRow()返回值+1
self.data_widget.insertRow(0)
#创建QTableWidgetItem实例
item_domain = QTableWidgetItem()
#给QTableWidgetItem添加内容
item_domain.setText("示例")
#将QTableWidgetItem添加到QTableWidget上
self.data_widget.setItem(0, 0,item_domain)

最终,解决问题:
在这里插入图片描述

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值