1.设计ui界面:
2.连接数据库并显示代码
widget.h
#include<QSqlTableModel>
private:
QSqlTableModel *model;//定义一个model指针
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include<QSqlDatabase>
#include<QDebug>
#include<QMessageBox>
#include<QSqlError>//lasterror用到的头文件
#include<QSqlQuery>//新建表用到的头文件
#include<QVariantList>//批量插入需要的头文件
//#include<QSqlTableModel>//ui里我用的表格
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//打印Qt支持的数据库驱动
qDebug() << QSqlDatabase::drivers();
/*("QSQLITE"静态数据库,不需要服务器,和文件一样,a.db
, "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")*/
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//添加SQLITE数据库
db.setHostName("0.0.0.0");//数据库服务器IP
db.setUserName("eagle");//数据库用户名
db.setPassword("123456");//数据库密码
db.setDatabaseName("checksysterm");//使用哪个数据库
//打开数据库
if(!db.open())
{
QMessageBox::warning(this,"错误",db.lastError().text());
return;
}
//设置模型
model =new QSqlTableModel(this);
model->setTable("test");//指定所用表
//model->view
ui->tableView->setModel(model);
//show
model->select();
}
Widget::~Widget()
{
delete ui;
}
效果:
3.逐个实现控件功能
1)改变显示的标题
model->setHeaderData(0,Qt::Horizontal,"编号");
model->setHeaderData(1,Qt::Horizontal,"现状");
model->setHeaderData(2,Qt::Horizontal,"时间");
效果:(双击就可修改,可以直接修改数据库)
如果不想让人修改则设置如下:
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
2)添加按钮功能
//添加信息
void Widget::on_buttonAdd_clicked()
{
//添加空记录
QSqlRecord record = model->record();//获取空记录
int row =model->rowCount();//获取行号
model->insertRecord(row,record);
}
//删除信息
void Widget::on_buttonDelete_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_pushButton_clicked()
{
model->submitAll();//全部提交
}
//撤销按钮
void Widget::on_buttonReturn_clicked()
{
model->revertAll();//撤销所有操作
model->submitAll();//全部提交
}
//关闭按钮
void Widget::on_buttonClose_clicked()
{
close();
}
//查找按钮
void Widget::on_buttonFind_clicked()
{
//获取
QString id = ui->lineEdit->text();
QString str= QString("id=%1").arg(id);
model->setFilter(str);
model->select();
}
效果:
1)添加信息操作
2)确定按钮,保存信息
3)删除操作
4)点击删除按钮后看见“!”
5)点击确定后,删除成功
6)输入需要id查找数据,点击查找按钮