2013-05-29 58 views
0

我有在QTableViewWidget的末尾添加一個新行,並以這種方式與數據填充它的過程:QTableViewWidget的insertRow與有序表添加內容錯行

#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

我知道如果我在C++中這樣做,我會事先創建該行並添加它,但似乎在Python中不可行。

而且,這裏是什麼文件說:

如果你想使你的表格部件排序您與項目填充後,這樣做,否則排序可以與插入順序干擾(參見setItem ()瞭解詳情)。

因此,我建議關閉排序,附加項目,然後再打開它。或者,如果這導致視覺問題,只需枚舉行,直到找到一個空的。這很混亂,但我認爲這是你能做的最好的。