c++ qt5.9 qsqlQuertModel QDataWidgetMapper 修改数据
时间: 2024-05-06 22:17:05 浏览: 178
要使用QDataWidgetMapper修改数据,你需要先绑定QSqlQueryModel和QDataWidgetMapper。以下是一个简单的例子:
```cpp
QSqlQueryModel *model = new QSqlQueryModel();
model->setQuery("SELECT * FROM mytable");
QDataWidgetMapper *mapper = new QDataWidgetMapper();
mapper->setModel(model);
mapper->addMapping(ui->lineEditName, 0); // 将第1列的数据映射到lineEditName上
mapper->addMapping(ui->lineEditAge, 1); // 将第2列的数据映射到lineEditAge上
ui->tableView->setModel(model);
ui->tableView->show();
// 当用户在lineEdit里修改数据时,可以通过下面的代码将修改保存到数据库中
connect(ui->pushButtonSave, &QPushButton::clicked, [=]() {
mapper->submit(); // 将当前行的数据提交到数据库中
model->submitAll(); // 保存所有的修改
});
```
在上面的例子中,我们创建了一个QSqlQueryModel来获取数据库中的数据,并将它绑定到QDataWidgetMapper上。然后,我们将QDataWidgetMapper映射到两个QLineEdit上,以便用户可以修改数据。最后,我们将QSqlQueryModel绑定到QTableView上,并在窗口中显示出来。
当用户在QLineEdit里修改数据时,可以通过调用QDataWidgetMapper的submit()函数将修改提交到数据库中。最终,我们使用model的submitAll()函数将所有的修改保存到数据库中。
注意:在执行submit()函数之前,需要确保用户已经完成了当前行的编辑。否则,提交的数据可能会不完整或不正确。
阅读全文