gpt4 book ai didi

c++ - QTableView 刷新行插入

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:26 26 4
gpt4 key购买 nike

在带有 QSqlQueryModel 的 QTableView 中,插入新行时刷新 View 的正确方法是什么?我看到使用 View 重置模型有效,但我认为这不是正确的方法。

简单的代码片段应该会有所帮助。

最佳答案

取决于您如何将新数据插入数据库。

如果您只是在代码的某处执行 QSqlQuery query("INSERT INTO .... "),那么更新 QSqlQueryModel 的唯一方法就是重置它,因为 QSqlQueryModel 不是 self 更新的 - 它只是运行查询并为您提供结果。它不能要求数据库给它“新数据”,因为数据库不知道关于模型的“新数据”是什么,并且没有来自数据库的“推送通知”(通常)。

我建议使用 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

如您所见,QSqlTableModel 几乎完全隐藏了 SQL 支持,您可以像处理普通模型一样使用它。

关于c++ - QTableView 刷新行插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28720877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com