.pro
QT += core gui sql
widget.h
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QSqlTableModel>namespace Ui {class Widget;}class Widget : public QWidget{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();private slots:void on_buttonAdd_clicked();void on_buttonSure_clicked();void on_buttonqx_clicked();void on_buttonDel_clicked();void on_buttonFind_clicked();private:Ui::Widget *ui;QSqlTableModel *model;};#endif // WIDGET_H
widget.cpp
#include "widget.h"#include "ui_widget.h"#include <QSqlDatabase>#include <QDebug>#include <QMessageBox>#include <QSqlError>#include <QSqlTableModel>#include <QSqlRecord>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget){ui->setupUi(this);// 添加MySql数据库QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");// 连接数据库db.setHostName("127.0.0.1");db.setUserName("root"); // 数据库用户名db.setPassword("123456"); // 密码db.setDatabaseName("test"); // 使用哪个数据库// 打开数据库if (!db.open()){QMessageBox::warning(this, "错误", db.lastError().text());return;}else {// 设置模型model = new QSqlTableModel(this);model->setTable("student"); // 制定使用哪个表// 把model放在viewui->tableView->setModel(model);// 显示model里的数据model->select();model->setHeaderData(0, Qt::Horizontal, "学号");// 设置model的编辑模式,手动提交修改model->setEditStrategy(QSqlTableModel::OnManualSubmit);// 设置view中的数据库不允许修改// ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);}}Widget::~Widget(){delete ui;}// 添加按钮void Widget::on_buttonAdd_clicked(){// 添加空记录QSqlRecord record = model->record(); // 获取空记录// 获取行号int row = model->rowCount();model->insertRecord(row, record);}// 确定按钮void Widget::on_buttonSure_clicked(){// 提交动作model->submitAll();}// 取消按钮void Widget::on_buttonqx_clicked(){model->revertAll(); // 取消所有动作model->submitAll(); // 提交动作}// 删除按钮void Widget::on_buttonDel_clicked(){// 获取选中的模型QItemSelectionModel * sModel = ui->tableView->selectionModel();// 取出模型中的索引QModelIndexList list = sModel->selectedRows();// 删除所有选中的行for(int i = 0; i < list.size(); i++){model->removeRow(list.at(i).row());}}// 查找按钮void Widget::on_buttonFind_clicked(){// 取出要查找的条件QString name = ui->lineEdit->text();QString str = QString("name = '%1'").arg(name);// 查找model->setFilter(str);// 显示model->select();}

