QT mysql内容实时显示_Qt-可视化数据库操作

1  简介

说明:Qt可使用QSqlTableModel来进行数据库的可视化操作,将mode/view与数据库结合起来使用,本文主要介绍使用QSqlTableModel来显示数据库的方法。

mode/view你就当作对象的可视化,这里我们操作的对象就是数据库。

2  测试及说明

我们需要使用的数据库已有一些数据,数据库如下:

54353c1a0c4c2e53de4a2652f0467ef1.png

需要使用到Qt的Table View组件:

13b69aa2a4bb202cd85f01cf4f4742ae.png

创建的界面如下:

56d181f6aef2c7a6d46953746a9c12d7.png

可使用增加、删除、确认、取消、查找(已name进行查找)按钮来对数据库进行相应的操作。

先给出运行测试的效果:

6a6695c1e255d9dafa14598068d684bb.gif

代码步骤说明:

(1)添加数据库、打开数据库、连接数据库

这个步骤,之前的博客有介绍,就直接给出代码:

1 //添加MySql数据库

2 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");3 //连接数据库

4 db.setHostName("127.0.0.1"); //数据库服务器IP

5 db.setUserName("root"); //数据库用户名

6 db.setPassword("123456"); //密码

7 db.setDatabaseName("test"); //使用哪个数据库8 //打开数据库

9 if (db.open() == false) {10 QMessageBox::warning(this, "错误", db.lastError().text());11 return;12 }

(2)设置模型

1 //设置模型

2 model = new QSqlTableModel(this);

(3)指定使用哪张表

1 //指定使用哪个表

2 model->setTable("student");

(4)把model放置到View里面

1 //把model放置到view里面

2 ui->tableView->setModel(model);

(5)显示mode的数据

1 //显示model里的数据

2 model->select();

(6)设置mode的编辑模式为手动提交修改

1 //设置model的编辑模式,手动提交修改

2 model->setEditStrategy(QSqlTableModel::OnManualSubmit);

(7)增加

1 voidWidget::on_pushButton_add_clicked()2 {3 //添加空记录

4 QSqlRecord record = model->record(); //获取空记录5 //获取行号

6 int row = model->rowCount();7 //添加空行

8 model->insertRecord(row, record);9 }

(8)删除

1 voidWidget::on_pushButton_delete_clicked()2 {3 //获取选中的模型

4 QItemSelectionModel *sModel = ui->tableView->selectionModel();5 //取出模型中的索引

6 QModelIndexList list = sModel->selectedRows();7 //删除所有选中的行

8 for (int i = 0; i < list.size(); i++) {9 model->removeRow(list.at(i).row());10 }11 }

(9)确认

1 voidWidget::on_pushButton_sure_clicked()2 {3 //提交所有动作

4 model->submitAll();5 }

(10)取消

1 voidWidget::on_pushButton_cancel_clicked()2 {3 //取下所有动作

4 model->revertAll();5 //提交所有动作

6 model->submitAll();7 }

(11)查找

1 voidWidget::on_pushButton_find_clicked()2 {3 //以name进行查找

4 QString key = ui->lineEdit->text();5 QString str = QString("name = '%1'").arg(key);6 //过滤条件

7 model->setFilter(str);8 model->select();9 }

完整代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include "widget.h"

2 #include "ui_widget.h"

3 #include

4 #include

5 #include

6 #include

7 #include

8 #include

9 #include

10 #include

11

12 Widget::Widget(QWidget *parent) :13 QWidget(parent),14 ui(newUi::Widget)15 {16 ui->setupUi(this);17

18 //打印qt支持的数据库驱动

19 qDebug() <<:drivers>

21 //添加MySql数据库

22 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");23 //连接数据库

24 db.setHostName("127.0.0.1"); //数据库服务器IP

25 db.setUserName("root"); //数据库用户名

26 db.setPassword("123456"); //密码

27 db.setDatabaseName("test"); //使用哪个数据库28 //打开数据库

29 if (db.open() == false) {30 QMessageBox::warning(this, "错误", db.lastError().text());31 return;32 }33 //设置模型

34 model = new QSqlTableModel(this);35 //指定使用哪个表

36 model->setTable("student");37 //把model放置到view里面

38 ui->tableView->setModel(model);39 //显示model里的数据

40 model->select();41

42 //model->setHeaderData(0, Qt::Horizontal, "学号");43

44 //设置model的编辑模式,手动提交修改

45 model->setEditStrategy(QSqlTableModel::OnManualSubmit);46 //设置数据库不允许修改47 //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

48 }49

50 Widget::~Widget()51 {52 deleteui;53 }54

55 voidWidget::on_pushButton_add_clicked()56 {57 //添加空记录

58 QSqlRecord record = model->record(); //获取空记录59 //获取行号

60 int row = model->rowCount();61 //添加空行

62 model->insertRecord(row, record);63 }64

65 voidWidget::on_pushButton_delete_clicked()66 {67 //获取选中的模型

68 QItemSelectionModel *sModel = ui->tableView->selectionModel();69 //取出模型中的索引

70 QModelIndexList list = sModel->selectedRows();71 //删除所有选中的行

72 for (int i = 0; i < list.size(); i++) {73 model->removeRow(list.at(i).row());74 }75 }76

77 voidWidget::on_pushButton_sure_clicked()78 {79 //提交所有动作

80 model->submitAll();81 }82

83 voidWidget::on_pushButton_cancel_clicked()84 {85 //取下所有动作

86 model->revertAll();87 //提交所有动作

88 model->submitAll();89 }90

91 voidWidget::on_pushButton_find_clicked()92 {93 //以name进行查找

94 QString key = ui->lineEdit->text();95 QString str = QString("name = '%1'").arg(key);96 //过滤条件

97 model->setFilter(str);98 model->select();99 }

View Code

  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值