2011-08-05 54 views
15

我的應用程序是電話簿(教育目的)。當用戶打開應用程序時,QTableWidged充滿了從.xml文件加載的數據。當用戶添加新的電話號碼時,我想將此號碼附加到QTableWidget,但之前將setRowCount設置爲當前值,現在它只是一行而已。我怎麼解決這個問題?如何將新行添加到現有QTableWidget?

回答

18

做這樣的事情應該工作:

tableWidget->insertRow(tableWidget->rowCount()); 

這將行追加到表的末尾。您可以使用insertRow()函數將新行插入到表的中間。

5

爲了延長@克里斯的回答,並提供額外的信息:如果你想添加數據

(即的push_back和填充一個新行):

tableWidget->insertRow (tableWidget->rowCount()); 
tableWidget->setItem (tableWidget->rowCount()-1, 
         yourColumn, 
         new QTableWidgetItem(string)); 
// repeat for more columns 

如果你知道行數和提前列:

ui->tableWidget->clear(); 
ui->tableWidget->setRowCount(numRows); 
ui->tableWidget->setColumnCount(numColumns); 
for (auto r=0; r<numRows; r++) 
    for (auto c=0; c<numColumns; c++) 
      tableWidget->setItem(r, c, new QTableWidgetItem(stringData(r,c))); 
+0

沒有函數「insertItem」。這是「setItem」! – Anonymous

+0

謝謝,更新了答案。它是['setItem'](http://doc.qt.io/qt-5.8/qtablewidget.html#setItem) – DomTomCat

+0

你的第一個例子仍然使用'insertItem'。 –