- 一、使用Qt Creater创建项目
- 二、在工程文件添加相关模块
- 三、交互界面设置
- 四、四个按钮转到槽 *** 作
- 五、头文件添加相关模块以及成员变量
- 六、编写源代码
- 七、测试
- 八、进一步完善
- 打包
准备环境
*** 作系统:Windows
数据库:Sqlite3
打包工具:Enigma Virtual Box
模板:QT Widgets Application
项目名:Student
基类:QDialog
类名:StudentDialog
一、使用Qt Creater创建项目
模板:QT Widgets Application
项目名:Student
基类:QDialog
类名:StudentDialog
创建完工程后如下:
-
本次需要用到的控件有如下:
Combo Box
PushButton
tableView
Label
Line Edit
-
添加第一个组合框Combo Box
-
第二个组合框
-
添加一个排序按钮pushButton
-
添加显示表的内容tableView控件
-
添加提示Label控件和输入Line Edit
-
添加 *** 作按钮PushButton
-
更改窗口标题为学生管理系统
-
修改控件名字
-
布局:自定义就可以了
四、四个按钮转到槽 *** 作
插入、删除、修改、排序按钮
自动生成槽函数
五、头文件添加相关模块以及成员变量
-
头文件studentdialog.h添加相关模块
//工程文件需要添加:QT+=sql #include
#include #include #include #include
-
添加成员
-
studentdialog.h参考代码
#ifndef STUDENTDIALOG_H #define STUDENTDIALOG_H #include
//工程文件需要添加:QT+=sql #include #include #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class StudentDialog; } QT_END_NAMESPACE class StudentDialog : public QDialog { Q_OBJECT public: StudentDialog(QWidget *parent = nullptr); ~StudentDialog(); private: //创建或连接sqlite数据库 void createDB(); //创建学生成绩数据表 void createTable(); //查询和显示数据表的内容 void queryTable(); private slots: //插入 void on_insertButton_clicked(); //删除 void on_deleteButton_clicked(); //修改 void on_updateButton_clicked(); //排序 void on_sortButton_clicked(); private: Ui::StudentDialog *ui; QSqlDatabase db; //建立应用程序和数据库连接 QSqlQueryModel model; //保存查询的结果集 }; #endif // STUDENTDIALOG_H
六、编写源代码
-
源文件studentdialog.cpp 添加相关函数
-
编写创建数据库驱动
//创建或连接sqlite数据库 void StudentDialog::createDB(){ //添加sqlite数据库驱动 db = QSqlDatabase::addDatabase("QSQLITE"); //设置数据库名字,如果“student.db”不存在会自动创建 db.setDatabaseName("student.db"); //打开数据库 if(db.open()== false){ qDebug()<<db.lastError().text(); }else{ qDebug()<<"创建或连接数据库成功"; } }
-
编写创建表的函数
//创建学生成绩数据表 void StudentDialog::createTable(){ //准备创建数据库表sql语句的字符串 QString str = QString("CREATE TABLE student(" "id INT PRIMARY KEY NOT NULL," "name TEXT NOT NULL," "score REAL NOT NULL)"); //执行sql语句 QSqlQuery query; if(query.exec(str)==false){ qDebug()<<str; }else{ qDebug()<<"创建数据表成功"; } }
-
编写查询数据表函数
//查询和显示数据表的内容 void StudentDialog::queryTable(){ //准备查询的sql语句字符串 QString str =QString("SELECT* FROM student"); //执行查询语句病保存结果集到model对象 model.setQuery(str); //将结果集显示到界面 ui->tableView->setModel(&model); }
-
编写插入按钮的槽函数
//插入 void StudentDialog::on_insertButton_clicked() { //准备插入 *** 作的sql语句字符串 int id = ui->idEdit->text().toInt(); //学生学号 QString name = ui->nameEdit->text(); //学生姓名 double score = ui->scoreEdit->text().toDouble();//学生成绩 QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)").arg(id).arg(name).arg(score); //执行sql语句 QSqlQuery query; if(query.exec(str) == false){ qDebug()<<str; }else{ qDebug()<<"插入数据成功"; queryTable(); } }
-
编写删除按钮的槽函数
//删除 void StudentDialog::on_deleteButton_clicked() { //准备删除 *** 作的sql语句字符串 int id = ui->idEdit->text().toInt(); //学生学号 QString str = QString("DELETE FROM student WHERE id=%1").arg(id); //执行sql语句 QSqlQuery query; if(query.exec(str) == false){ qDebug()<<str; }else{ qDebug()<<"删除数据成功"; queryTable(); } }
-
编写修改按钮的槽函数
//修改 void StudentDialog::on_updateButton_clicked() { //准备修改 *** 作的sql语句字符串 int id = ui->idEdit->text().toInt(); //学生学号 double score = ui->scoreEdit->text().toDouble();//学生成绩 QString str = QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id); //执行sql语句 QSqlQuery query; if(query.exec(str) == false){ qDebug()<<str; }else{ qDebug()<<"修改数据成功"; queryTable(); } }
-
编写排序按钮槽函数
//排序 void StudentDialog::on_sortButton_clicked() { //准备排序查询的sql语句字符串 QString value = ui->valuecomboBox->currentText(); QString condition; //排序方式:升序(0)/降序(1) if(ui->valuecomboBox->currentIndex() == 0){ condition = "ASC"; }else{ condition = "DESC"; } QString str =QString("SELECT* FROM student ORDER BY %1 %2").arg(value).arg(condition); //执行查询语句病保存结果集到model对象 model.setQuery(str); //将结果集显示到界面 ui->tableView->setModel(&model); }
-
完整的头文件和源代码
- 头文件studentdialog.h
#ifndef STUDENTDIALOG_H #define STUDENTDIALOG_H #include
//工程文件需要添加:QT+=sql #include #include #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class StudentDialog; } QT_END_NAMESPACE class StudentDialog : public QDialog { Q_OBJECT public: StudentDialog(QWidget *parent = nullptr); ~StudentDialog(); private: //创建或连接sqlite数据库 void createDB(); //创建学生成绩数据表 void createTable(); //查询和显示数据表的内容 void queryTable(); // *** 作后重置输入框为空 void opEmpty(); private slots: //插入 void on_insertButton_clicked(); //删除 void on_deleteButton_clicked(); //修改 void on_updateButton_clicked(); //排序 void on_sortButton_clicked(); private: Ui::StudentDialog *ui; QSqlDatabase db; //建立应用程序和数据库连接 QSqlQueryModel model; //保存查询的结果集 }; #endif // STUDENTDIALOG_H
- 源文件studentdialog.cpp
#include "studentdialog.h" #include "ui_studentdialog.h" StudentDialog::StudentDialog(QWidget *parent) : QDialog(parent) , ui(new Ui::StudentDialog) { ui->setupUi(this); createDB(); createTable(); queryTable(); } StudentDialog::~StudentDialog() { delete ui; } //创建或连接sqlite数据库 void StudentDialog::createDB(){ //添加sqlite数据库驱动 db = QSqlDatabase::addDatabase("QSQLITE"); //设置数据库名字,如果“student.db”不存在会自动创建 db.setDatabaseName("student.db"); //打开数据库 if(db.open()== false){ qDebug()<<db.lastError().text(); }else{ qDebug()<<"创建或连接数据库成功"; } } //创建学生成绩数据表 void StudentDialog::createTable(){ //准备创建数据库表sql语句的字符串 QString str = QString("CREATE TABLE student(" "id INT PRIMARY KEY NOT NULL," "name TEXT NOT NULL," "score REAL NOT NULL)"); //执行sql语句 QSqlQuery query; if(query.exec(str)==false){ qDebug()<<str; }else{ qDebug()<<"创建数据表成功"; } } //查询和显示数据表的内容 void StudentDialog::queryTable(){ //准备查询的sql语句字符串 QString str =QString("SELECT* FROM student"); //执行查询语句病保存结果集到model对象 model.setQuery(str); //将结果集显示到界面 ui->tableView->setModel(&model); } void StudentDialog::opEmpty(){ ui->idEdit->setText(""); ui->scoreEdit->setText(""); ui->nameEdit->setText(""); } //插入 void StudentDialog::on_insertButton_clicked() { //准备插入 *** 作的sql语句字符串 int id = ui->idEdit->text().toInt(); //学生学号 QString name = ui->nameEdit->text(); //学生姓名 double score = ui->scoreEdit->text().toDouble();//学生成绩 QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)").arg(id).arg(name).arg(score); //执行sql语句 QSqlQuery query; if(query.exec(str) == false){ qDebug()<<str; }else{ qDebug()<<"插入数据成功"; queryTable(); opEmpty(); } } //删除 void StudentDialog::on_deleteButton_clicked() { //准备删除 *** 作的sql语句字符串 int id = ui->idEdit->text().toInt(); //学生学号 QString str = QString("DELETE FROM student WHERE id=%1").arg(id); //执行sql语句 QSqlQuery query; if(query.exec(str) == false){ qDebug()<<str; }else{ qDebug()<<"删除数据成功"; queryTable(); opEmpty(); } } //修改 void StudentDialog::on_updateButton_clicked() { //准备修改 *** 作的sql语句字符串 int id = ui->idEdit->text().toInt(); //学生学号 double score = ui->scoreEdit->text().toDouble();//学生成绩 QString str = QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id); //执行sql语句 QSqlQuery query; if(query.exec(str) == false){ qDebug()<<str; }else{ qDebug()<<"修改数据成功"; queryTable(); opEmpty(); } } //排序 void StudentDialog::on_sortButton_clicked() { //准备排序查询的sql语句字符串 QString value = ui->valuecomboBox->currentText(); QString condition; //排序方式:升序(0)/降序(1) if(ui->valuecomboBox->currentIndex() == 0){ condition = "ASC"; }else{ condition = "DESC"; } QString str =QString("SELECT* FROM student ORDER BY %1 %2").arg(value).arg(condition); //执行查询语句病保存结果集到model对象 model.setQuery(str); //将结果集显示到界面 ui->tableView->setModel(&model); }
- 插入、删除、修改后清空输入框
头文件添加定义函数opEmpty();
源文件添加函数
2. *** 作信息打印到前台终端- 添加listWidget 控件
- 把qDebug 改写入到控件
ui->listWidget->addItem(QString(“修改数据成功”));
- 添加listWidget 控件
请查考:https://blog.csdn.net/weixin_41560737/article/details/124298389
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)