我在tableView的QStandardItemModel
中显示来自Sqlite数据库的数据,以便用户可以编辑它。一旦用户按下" Save"我想立即将这些更改保存回我的数据库。或尝试退出未保存的更改(在这种情况下给予promt)。
这可能是最好的方法吗?我在考虑运行更新查询。但有没有办法只在那些已被用户修改的行上运行查询?
答案 0 :(得分:2)
您可以使用QSqlTableModel
在QTableView
:
QSqlTableModel * model = new QSqlTableModel(this,db);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setTable( "someTable" );
model->select();
ui->tableView->setModel( model );
为了保存或取消更改,您可以在最后开始转换并提交或回滚。开始交易就像:
model->database().transaction();
保存按钮的代码:
if(model->submitAll())
model->database().commit();
else
model->database().rollback();
取消按钮的代码:
model->revertAll();
model->database().rollback();
答案 1 :(得分:0)
您应该使用内置的QSqlTableModel
类。它提供了可编辑的数据模型,可以自动保存更改。