Adding items to a QTableWidget in this way

 while (a_query.next()) { Login = a_query.value(rec.indexOf("Login")).toString(); Password = a_query.value(rec.indexOf("Password")).toString(); FIO = a_query.value(rec.indexOf("FIO")).toString(); Dop_inf = a_query.value(rec.indexOf("Dop_inf")).toString(); ui->tableWidget2->insertRow(ui->tableWidget2->rowCount()); ui->tableWidget2->setItem(row_count,0, new QTableWidgetItem(Login)); ui->tableWidget2->setItem(row_count,1, new QTableWidgetItem(Password)); ui->tableWidget2->setItem(row_count,2, new QTableWidgetItem(FIO)); ui->tableWidget2->setItem(row_count,3, new QTableWidgetItem(Dop_inf)); row_count++; } 

But when I do ui->tableWidget2->clear(); sigmentation fault

What am I doing wrong?

1 answer 1

QTableWidget does not need to sin. Here is a minimal example, and it works:

 int main(int argc, char* argv[]) { QApplication app(argc, argv); QTableWidget table; table.setColumnCount(4); int row_count = 0; for (int i = 0; i < 10; ++i) { table.insertRow(table.rowCount()); table.setItem(row_count,0, new QTableWidgetItem("Login")); table.setItem(row_count,1, new QTableWidgetItem("Password")); table.setItem(row_count,2, new QTableWidgetItem("FIO")); table.setItem(row_count,3, new QTableWidgetItem("Dop_inf")); row_count++; } QPushButton btn("Clear"); QObject::connect(&btn, SIGNAL(clicked()), &table, SLOT(clear())); table.show(); btn.show(); return app.exec(); } 

Most likely, somewhere you delete something more than once. Look for the error using the debugger.

PS: behind mysterious names Login , Password , FIO , Dop_inf are Dop_inf simple QString 'and?