2、进入“撤销修改”按钮单击事件槽函数,并更改如下:
- void Widget::on_pushButton_2_clicked() //撤销修改
- {
- model->revertAll();
- }
它只有简单的一行代码。
我们需要在widget.cpp文件中添加头文件:
- #include <QMessageBox>
- #include <QSqlError>
此时运行程序,效果如下:
我们将“陈刚”改为“李强”,如果我们点击“撤销修改”,那么它就会重新改为“陈刚”,而当我们点击“提交修改”后它就会保存到数据库,此时再点击“撤销修改”就修改不回来了。
可以看到,这个模型可以将所有修改先保存到model中,只有当我们执行提交修改后,才会真正写入数据库。当然这也是因为我们在最开始设置了它的保存策略:
- model->setEditStrategy(QSqlTableModel::OnManualSubmit);
OnManualSubmit表明我们要提交修改才能使其生效。
第二,查询操作。
1.我们进入“查询”按钮的单击事件槽函数,更改如下:
- void Widget::on_pushButton_7_clicked() //查询
- {
- QString name = ui->lineEdit->text();
- model->setFilter(QObject::tr(“name = ‘%1′”).arg(name)); //根据姓名进行筛选
- model->select(); //显示结果
- }
我们使用setFilter()函数进行关键字筛选,这个函数是对整个结果集进行查询。为了使用变量,我们使用了QObject类的tr()函数。
2.我们进入“返回全表”按钮的单击事件槽函数,更改如下:
- void Widget::on_pushButton_8_clicked() //返回全表
- {
- model->setTable(“student”); //重新关联表
- model->select(); //这样才能再次显示整个表的内容
- }
为了再次显示整个表的内容,我们需要再次关联这个表。
运行效果如下:
我们输入一个姓名,点击“查询”按钮后,就可以显示该记录了。再点击“返回全表”按钮则返回。