[SOLVED] remove row from QTableView with QSQLTableModel
Hi! I have a QTableView filled using a mySQL database through QSQLTableModel.
I can edit the values and soon they are updated on the database as expected.
The problem comes when I try to delete one record, I tried different ways as I found some examples on the Internet. The "best" snippet I found is the following but even this doesn't work.
What am I doing wrong?
The record that I want to delete is the currently selected (only one row can be selected at once).
@ //allBooksModel: QSqlTableModel
QModelIndexList list = ui->allBooksTable->selectionModel()->selectedIndexes();
QModelIndex index = list.at(0);
IIRC, you should just call removeRow(index.row())
Oh wow, the constructor asks also for the QModelndex so i fought a lot for nothing!
Now I can remove the line, also from the database.. but.. it removes the wrong line!!
I hope to find out what's the problem!!
Kind of strange problem.
A wrong row is removed because the elements are sorted just before to delete the row! I'm using QSortFilterProxyModel for sorting and filtering...
You are getting the index from your proxy, you should get the original index from your proxy model using mapToSource
Thank you! It works correctly now, but I can still see the empty rows when I delete them. I can solve re-selecting the model, is it the correct way?
AFAIK you should not need to