1.新建一个QT Widgets Application
2. 在pro中间中添加sql
QT += sql
3.mainwindows.h中添加头文件
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlTableModel>
#include <QSqlQuery>
#include <QDebug>
4.ui中添加一个tableview
5.MainWindow构造函数中添加简单代码:
qDebug() << QSqlDatabase::drivers() ;
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//数据库类型
db.setDatabaseName("test");//建立连接,已存在即连接,不存在即建立连接
db.setUserName("root");
db.setPassword("123456");
if(!db.open())//打开连接
{
QMessageBox::warning(this,"wrong",db.lastError().text());
return;
}
else{
QMessageBox::information(this, "infor", "link success");
}
QSqlTableModel * model = new QSqlTableModel(this,db);
model->setTable("student");
ui->tableView->setModel(model);
model->select();
QStringList tables;
tables << "id" << "姓名" << "年龄" << "城市";
for(int i = 0 ; i < tables.count(); i++)
model->setHeaderData(i,Qt::Horizontal,tables[i]);//设置显示框表头显示
model->setSort(0,Qt::AscendingOrder);//设置按照第0列排序
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置单元格不可编辑
ui->tableView->horizontalHeader()->setStretchLastSection(true);//设置最后一列填充后面表格
ui->tableView->setColumnHidden(0,true);//设置第0行隐藏
ui->tableView->setColumnWidth(1,50);//设置列宽,界面看起来更舒适
ui->tableView->setColumnWidth(2,30);//设置列宽,界面看起来更舒适
6.确保或新建一个mysql的数据库,名字为test,包含一个名字为student的表,表中添加几列数据,注意数据库名和表名要跟第5步中代码的名字一致!
7.直接运行看效果
8.把代码中设置单元格不可编译这一条注释掉以后,还可以直接修改内容,软件会自动同步到数据库中!!!很强悍
9.又更新了完整功能
每页只显示10行,每页中的每列可以排序,能删除选定行,增加一行,跳转到第一页、上一页、下一页、最后页,点击单元格可以修改内容并同步保存到数据库等。。。
效果如下:
源码如下: