自己想要实现一个功能:在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)
最终,解决问题: