当前位置:嗨网首页>书籍在线阅读

11-保存与取消修改

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

11.2.5 保存与取消修改

在打开数据表初始化时,设置数据模型的编辑策略为OnManualSubmit,即手动提交修改。当数据模型的数据被修改后,不管是直接修改字段值,还是插入或删除记录,在未提交修改前,QSqlTableModel::isDirty()函数返回true,就是利用这个函数在自定义槽函数on_currentChanged()里修改actSubmit和actRevert两个Action的使能状态。

actSubmit用于保存修改,actRevert用于取消修改,对应工具栏上的“保存”和“取消”两个按钮,下面是这两个Action的槽函数的代码。

void MainWindow::on_actSubmit_triggered()
{//保存修改
   bool res=tabModel->submitAll();
   if (!res)
      QMessageBox::information(this, "消息", "数据保存错误,错误信息\n" 
   +tabModel->lastError().text(),QMessageBox::Ok,QMessageBox::NoButton);
   else
   {
      ui->actSubmit->setEnabled(false);
      ui->actRevert->setEnabled(false);
   }
}
void MainWindow::on_actRevert_triggered()
{//取消修改
   tabModel->revertAll();
   ui->actSubmit->setEnabled(false);
   ui->actRevert->setEnabled(false);
}

QSqlTableModel::submitAll()函数用于将数据表所有未提交的修改保存到数据库,revertAll()函数取消所有修改。

调用submitAll()函数保存数据时如果失败,可以通过lastError()函数获取错误的具体信息,例如,Name是必填字段,添加记录时若没有填写Name字段的内容就提交,就会出现错误信息提示对话框。