在使用QSqlQueryModel的QTableView中,刷新新行插入视图的正确方法是什么?我看到重置模型与视图有效,但我不认为这是正确的方法.
简单的代码片段应该有所帮助.
小智 5
取决于您如何将新数据插入数据库.
如果您只是QSqlQuery query("INSERT INTO .... ")在代码中的某处,那么更新的唯一方法QSqlQueryModel是重置它,因为QSqlQueryModel它不是自我更新的 - 它只是运行查询并为您提供结果.它不能要求数据库给它"新数据",因为数据库不知道关于模型的"新数据"是什么,并且没有来自数据库的"推送通知"(通常).
我建议使用QSqlTableModel,它允许您也插入新行,模型将自动运行INSERT查询以将新数据保存到数据库中.它还允许修改("UPDATE ...").
// Setup the model
QSqlTableModel *model = new QSqlTableModel(this, database);
model->setTable("myTable");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select(); // will populate the model
...
...
// Insert new row and data
const int row = model->rowCount();
model->insertRows(row, 1);
model->setData(model->index(row, 0), "First column value");
model->setData(model->index(row, 1), "Second column value");
// Commit the new record into database
model->submitAll(); // submit
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,QSqlTableModel几乎完全隐藏了您的SQL支持,并且您使用它就像处理普通模型一样.
| 归档时间: |
|
| 查看次数: |
2049 次 |
| 最近记录: |