我有一个程序在QTableViewWidget的末尾添加一个新行,并用这种方式填充数据:
#Add new row
table.insertRow(table.rowCount())
#Fill the row
item = QTableWidgetItem()
item.setData(QtCore.Qt.DisplayRole,iterationNumber)
self.tableOptimization.setItem(table.rowCount()-1, 0, item)
item = QTableWidgetItem()
item.setData(QtCore.Qt.DisplayRole,total)
self.tableOptimization.setItem(table.rowCount()-1, 1, item)
问题在于,如果您在任何列中单击表单,则新添加的行不再是最后一行,因此setItem正在设置当前的最后一行元素。
有什么方法可以解决这个问题吗?在添加之前填写数据?保持对插入行的引用?
答案 0 :(得分:0)
我知道如果我在C ++中这样做,我会事先创建行然后追加它,但似乎在Python中不可能。
另外,这里有文档说的内容:
如果要在表格小部件中启用排序,请在使用项目填充后执行此操作,否则排序可能会干扰插入顺序(有关详细信息,请参阅setItem())。
因此,我建议关闭排序,附加项目,然后重新打开。或者,如果这会导致视觉问题,只需枚举行,直到找到一个空的行。它很乱,但我认为这是你能做的最好的事情。