0

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

有没有办法解决这个问题?添加前填写数据?保留对插入行的引用?

4

1 回答 1

0

我知道如果我在 C++ 中执行此操作,我会事先创建该行然后附加它,但它似乎在 Python 中是不可能的。

此外,这是文档所说的:

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

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

于 2013-05-29T14:59:34.667 回答