首页 > 编程知识 正文

qt读取数据库数据并显示,qt读取数据库数据并显示图形

时间:2023-05-03 06:54:12 阅读:37885 作者:2362

1配置文件

说明: Qt可以使用qsql表模型进行数据库可视化操作,将mode/view与数据库结合使用。 本文主要介绍如何使用qsql表模型显示数据库。

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

2测试和说明

要使用的数据库中已经有一些数据。 数据库如下

用于Qt的Table View组件:

创建的接口如下:

可以使用“添加”、“删除”、“确认”、“取消”和“查找”按钮正确操作数据库。

首先,展示了运行测试的效果。

代码步骤说明:

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

此过程直接显示代码,因为在上一个博客中介绍了它:

添加1//MySQL数据库

2 qsqldatabasedb=qsql数据库:3360 add数据库(' qmysql ); 3 //连接到数据库

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

5db.setusername('root ); //数据库用户名

6db.setpassword(123456 ); //密码

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

9if(db.open(==false ) ) 10 qmessagebox 33603360 warning (this,'错误',db.lastError ).text ); 11返回; 12 }

)2)设置模型

1 //设定模型

2model=newQSQLtablemodel(this;

)3)指定使用哪个表

1 //指定使用哪个表

2型号安装(student );

)4)将模型放入视图中

1//model进入视图

2用户界面视图集模型(模型;

)5)显示mode数据

显示1//model的数据

2模型选择(;

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

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

2模型设置(qsql表模型: onmanualsubmit );

(七)增加

1 void构件:3360 on _ push button _ add _ clicked (2{3//添加空记录

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

6 int row=模型- rowcount (; 7 //添加空行

8型号插入记录(row,record ); 9 }

(8)删除

1 void构件:3360 on _ push button _ delete _ clicked (2{3//获取所选模型

4 qitemselectionmodel * s模型=ui-table view-selection model (; 5 //从模型中提取索引

6 qmodelindexlistlist=s model -选定rows (; 7 //删除所有选定的行

8for(intI=0; i list.size (; I ({ 9模式移除行(list.at ) I ).row ); 10 }11 }

(9)确认

1 void构件:3360 on _ push button _ sure _ clicked (2{3//提交所有操作

4模型提交全部(; 5 }

(10 )取消

1 void构件:3360 on _ push button _ cancel _ clicked (2{3//删除所有操作

4型号- revert all (; 5 //提交所有动作

6模型提交全部(; 7 }

(11 )搜索

1 void构件:3360 on _ push button _ 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 }

完整代码如下:

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。