32

My app is phonebook(educational purposes). When user opens application, QTableWidged is filled with data loaded from .xml file. When user add new phone number, I would like to append this number to QTableWidget, but previously I setRowCount to current value, and now it is one row to little. How can I solve this problem?

3 Answers 3

46

Doing something like this should work:

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

This will append a row to the end of your table. You can use the insertRow() function to insert new rows into the middle of your table as well.

Sign up to request clarification or add additional context in comments.

Comments

29

To extend @Chris' answer and provide additional information:

If you want to add data (i.e. push_back and fill a new row):

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

If you know the number of rows and columns in advance:

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)));

Comments

5

If you are using Python + PyQt5

from PyQt5 import QtCore, QtWidgets

# table is a QtWidgets.QTableWidget object
table.insertRow(table.rowCount()) 
item = QtWidgets.QTableWidgetItem(ITEM_CONTENT)
table.setItem(table.rowCount()-1, COLUMN_INDEX, item)
item = QtWidgets.QTableWidgetItem(ROW_LABEL_STRING)
table.setVerticalHeaderItem(table.rowCount()-1, item)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.