Solved [QTableView remove selected rows?
-
Hi All,
With the above code i could not able to remove the selected rows from the QTableview is interface with database conncetion......please any one guide me -
I am not able to delete by selecting entire row from the Qtableview using delete push button ...give me some examples
-
// get the selected indexes QModelIndexList selectedIndexes = tableView->selectionModel()->selectedIndexes(); // make sure you are not deleting from a tree Q_ASSERT(std::equal(selectedIndexes.constBegin()+1,selectedIndexes.constEnd(),selectedIndexes.constBegin(),[](const QModelIndex& a,const QModelIndex& b)->bool{return a.parent()==b.parent();})); // sort from bottom to top std::sort( selectedIndexes.begin(),selectedIndexes.end(),[](const QModelIndex& a,const QModelIndex& b)->bool{return b.row()<a.row();}); QSet<int> deletedRows; // keep a record of rows already deleted for(auto i = selectedIndexes.constBegin();i!=selectedIndexes.constEnd();++i){ if(deletedRows.contains(i->row())) continue; //row deleted already, move on if(tableView->model()->removeRow(i->row(),i->parent())) // try to delete the row deletedRows << i->row(); // if successful store the row as deleted }
-
I got selectedIndexes is 5 ITEMS while debugging my code "deletedRows" is 0 after that my selected row is remains same only it is not deleted .....my QTableview is connected with database.....
-
@veera said in [QTableView remove selected rows?:
QTableview is connected with database
What model are you using?
-
@VRonin
I am using this model
QSqlQueryModel *model = new QSqlQueryModel; -
from http://doc.qt.io/qt-5/qsqlquerymodel.html:
The QSqlQueryModel class provides a read-only data model for SQL result sets.
Since it's read only it does not allow you to delete rows
-
Then which model i need to use and how to do it please give me some examples ........
-
either QSqlTableModel (be carefull with this one, read the docs) or you manually populate a QStandardItemModel from the data you get from a QSqlQuery
-
give me some examples so that i can understand it better
-
QStandardItemModel + QSqlQuery https://forum.qt.io/topic/76135/qsqlrelationaltablemodel-and-complex-queries/21
QSqlTableModel http://doc.qt.io/qt-5/qsqltablemodel.html#details
-
Its not happening ....... i have selected one and tried but its not deleting and tried many rows also not deleting my database is MSSQL in Ubuntu.....
-
30 minutes before giving up?
create a dummy table in your database (so even in case of a disaster you won't lose anything important) and try with QSqlTableModel
-
I want to something this type of query
query->prepare("DELETE FROM Info WHERE ID = ?");
query->addBindValue(ID);
for deleting of entire row by selecting a particular row........... -
QSqlTableModel or QSqlRelationalTableModel does that for you if you can live with simple queries. if you have convoluted joins then you'll have to connect to the model
rowsRemoved
orrowsAboutToBeRemoved
signal and prepare the query manually -
@VRonin
I am a beginner of MS SQL so please give me examples -
... it's included as part of Qt's examples: http://doc.qt.io/qt-5/qtsql-relationaltablemodel-example.html
-
i go through the examples in that they creating QTableView *view = new QTableView; but i am designed in the UI drag and drop of Tableview and everything so.........
-
There is absolutely no difference. The trag and drop in Qt Designer generates an xml file describing your interface then
uic
converts that xml into code basically identical to the one in the examples.On top of this, your problem is not in the UI but in the model design so you should not really care about how the UI is created
-
I go through those examples ,explaining the inserting data into the tableview but they did not explain the deleting particular row after selecting it........