QTableViewWidget insertRow with ordered tables将内容添加到错误的行

时间:2013-05-29 13:26:28

标签: python qt pyqt qtablewidgetitem

我有一个程序在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正在设置当前的最后一行元素。

有什么方法可以解决这个问题吗?在添加之前填写数据?保持对插入行的引用?

1 个答案:

答案 0 :(得分:0)

我知道如果我在C ++中这样做,我会事先创建行然后追加它,但似乎在Python中不可能。

另外,这里有文档说的内容:

  

如果要在表格小部件中启用排序,请在使用项目填充后执行此操作,否则排序可能会干扰插入顺序(有关详细信息,请参阅setItem())。

因此,我建议关闭排序,附加项目,然后重新打开。或者,如果这会导致视觉问题,只需枚举行,直到找到一个空的行。它很乱,但我认为这是你能做的最好的事情。