Qt Project Qt+MySQL实现图书管理系统

做这个项目之前我没接触过Qt 我也没做过项目,如果贪吃蛇算项目的话。。我只是粗略的看完了C++ Primer。。
我是照着一篇SQL+JAVA的思路合着Qt快速上手完成的项目合着老师的要求

1.需求分析

1.1用户需求
面向三类用户:超级管理员、管理员、学生
超级管理员可对学生、管理员信息作查询、增加、修改操作
管理员可对书籍进行查询、增加、修改操作,可对学生的借书情况进行查看
学生可以对已借书籍进行续借、也可对未借书籍进行预约
三类用户必须输入正确的ID及PASSWORD方可进入系统

1.2 业务流程分析
该系统功能模块:

学生、管理员、超级管理员

  1. 登陆功能:登陆系统为身份验证登陆,分为学生登陆,管理员登陆,超级管理员登陆,不具备注册功能
  2. 学生登陆后:显示该用户的基本信息,可续借已借书籍,可预约未借书籍
  3. 管理员登陆后:显示该用户的基本信息,对书籍进行相应操作、查看学生的借还情况
  4. 超级管理员登陆后:显示该用户的基本信息,对管理员、学生进行相应操作
    学生
  5. 预约书籍:查询到书籍后,可对书籍进行预约
  6. 已借书籍:可对已借书籍进行续借

管理员

  1. 增加书籍:可直接向数据库输入新的书籍信息
  2. 修改书籍信息:查看书籍具体信息后,可对书籍信息进行修改
  3. 对学生借还的情况进行查看

超级管理员

  1. 增加管理员:增加一个新的管理员
  2. 查看管理员信息:查看管理员信息后,可对其进行修改
  3. 增加学生:增加一个新的学生用户
  4. 查看学生信息:查看学生信息后,可对其进行修改

2.BPM模型(这里我就贴我用PD画的模型吧)

在这里插入图片描述

3.原型(使用Axure)

嗯我画的很粗略就随便看看好了,和最后实现的界面布局也差很多
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.数据库设计(CDM->LDM->PDM->SQL)

表有book、student、administrator、superadministrator、borrow、reserve

create table book(
bno varchar(10),
bname varchar(30),
bAuthor varchar(20),
bnum int,
primary key(bno)
);

create table student(
ID varchar(10) ,
PASSWORD varchar(10),
primary key(ID)
);

create table administrator(
ID varchar(10),
PASSWORD varchar(10),
primary key(ID)
);


create table superadministrator(
ID varchar(10),
PASSWORD varchar(10),
primary key(ID)
);

create table book_borrow(
ID varchar(10),
bno varchar(10),
primary key(ID,bno),
foreign key(ID) references student(ID) on delete cascade,
foreign key(bno) references book(bno) on delete cascade);

create table reserve (
bno varchar(10),
ID varchar(10),
primary key(bno,ID),
foreign key(bno) references book(bno) on delete cascade,
foreign key(ID) references student(ID) on delete cascade);

以下是一些插入数据
insert into book values
('100001','C++ Primer','Stanley B. Lippman',100),
('100002','Database System Concepts','Avi Silberschatz',100),
('100003','数据结构算法与应用C++语言描述','Sartaj Sahni',100),
('100004','数据库系统概论','王珊',100),
('100005','数据结构C语言版','严蔚敏',100);

insert into student values('1170210042','123456');
insert into administrator values('leslie','123456');
insert into superadministrator values('leslie5','123456');

insert into book_borrow values('1170210042','100001');

insert into reserve values (100004,1170210042);

5.Qt实现

1.连接mysql数据库

请安装32位MySQL以及32位Qt5.2以上版本 我的32位Qt连接不上64位的MySQL
Qt 5.2以上版本已编译好连接MySQL的驱动,我们就可以偷偷用了嘿嘿
在连接之前,在MySQL安装目录将lib文件夹下的 libmysql.dll 文件拷贝置Qt安装目录bin下(我的是C:\QT\Qt5.11.2\5.11.2\mingw53_32\bin)

在这里注意!在之后编译的时候请务必选对编译器版本!!

在这里插入图片描述

由于我们放入的是mingw53_32文件夹下,所以在kit套件选择MinGW编译!否则会显示连接失败!(当然你可以选择放在其他目录下选择其他套件)

新建一个Qt Widgets Application,修改.pro文件QT +=sql

测试代码:

#include "mainwindow.h"
#include <QApplication>
#include<QSqlDatabase>
#include "book_student.h"
#include<QMessageBox>
#include<QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QTextCodec>
bool creatConnect();
QString MainWindow::u;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    creatConnect();
    MainWindow w;
    w.show();
    return a.exec();
}
bool creatConnect()
{
    QSqlDatabase db= QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("library");
    db.setUserName("root");
    db.setPassword("123456");

    bool ok = db.open();//建立数据库连接
    if(!ok)
    {
        QMessageBox::critical(0,QObject::tr("连接数据库失败!!!"),db.lastError().text());
        return false;
    }
    else
    {
        QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("连接数据库成功!!!"));
        return true;
    }
}

将相应的数据改成你的MySQL数据,运行,连接成功会有弹框提示

2.下面贴一下cpp代码

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<book_student.h>
#include<QTableWidget>
#include<QSqlQuery>
#include<QSqlRecord>
#include<QDebug>
#include<QMessageBox>
#include<QStandardItemModel>
#include<QTableView>
#include<QString>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("图书管理系统主窗口");
    ui->PAlineEdit->setEchoMode(QLineEdit::Password);

    MainWindow::student=new book_student(this);
    MainWindow::administrator=new book_administrator(this);
    MainWindow::superadministrator=new book_super_administrator(this);
    MainWindow::brw=new Book_Borrow(this);
    //MainWindow::rsw=new Reserve;


    ui->book_search->setPlaceholderText("请输入书名");
    ui->tableWidget->setRowCount(100);     //设置行数为10
    ui->tableWidget->setColumnCount(4);   //设置列数为5
    ui->tableWidget->setColumnWidth(1,200);
    ui->tableWidget->setColumnWidth(2,200);
    QStringList header;
    header<<"Book_No"<<"Book_Name"<<"Book_Author"<<"Book_number";
    ui->tableWidget->setHorizontalHeaderLabels(header);
    QSqlQuery query;
    query.exec("select * from book");
    int k=-1;
    while(query.next()){
        ++k;
        for(int i=0;i<4;++i)ui->tableWidget->setItem(k,i,new QTableWidgetItem(query.value(i).toString()));

    }
    //The Sign out
   /* connect(student->Signout,SIGNAL(clicked()),this,SLOT(reshow()));
    connect(administrator->Signout,SIGNAL(clicked()),this,SLOT(reshow()));
    connect(superadministrator->Signout,SIGNAL(clicked()),this,SLOT(reshow()));*/

    //Student's borrow
    connect(student->Borrowed,SIGNAL(clicked()),this,SLOT(create()));


    //admini's book manage
    //connect(administrator->)

    //connect(brw,SIGNAL(sendData(QString)),this,SLOT(receiveData(QString)));


}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString username=ui->IDlineEdit->text();
    QString userpassword=ui->PAlineEdit->text();
    QSqlQuery query;
    MainWindow::u=username;
    if(ui->radioButton->isChecked()){//student
        query.prepare("select PASSWORD from student where ID=:ll");
        query.bindValue(":ll",username);
        query.exec();
        query.first();
        QString password=query.value(0).toString();
        if(password==userpassword){
            student->exec();
            ui->IDlineEdit->clear();
            ui->PAlineEdit->clear();
        }else{
            QMessageBox::warning(this,"错误","用户名或密码错误!","确定");
        }
    }
    else if(ui->radioButton_2->isChecked()){//administrator
        query.prepare("select PASSWORD from administrator where ID=:ll");
        query.bindValue(":ll",username);
        query.exec();
        query.first();
        QString password=query.value(0).toString();
        if(password==userpassword){
            administrator->exec();
            ui->IDlineEdit->clear();
            ui->PAlineEdit->clear();
        }else{
           QMessageBox::warning(this,"错误","用户名或密码错误!","确定");
        }
    }
    else if(ui->radioButton_3->isChecked()){//superadministrator
        query.prepare("select PASSWORD from superadministrator where ID=:ll");
        query.bindValue(":ll",username);
        query.exec();
        query.first();
        QString password=query.value(0).toString();
        if(password==userpassword){
            superadministrator->exec();
            ui->IDlineEdit->clear();
            ui->PAlineEdit->clear();
        }else{
            QMessageBox::warning(this,"错误","用户名或密码错误!","确定");
        }
    }
}
void MainWindow::on_search_button_clicked()
{
    QString book_name=ui->book_search->text();
    QSqlQuery query;
    /*if(book_name.length()==0){QMessageBox::warning(this,"错误","请输入书名!","确定");return;}*/
    ui->tableWidget->clearContents();
    query.prepare("select * from book where bname like :ll");
    query.bindValue(":ll","%"+book_name+"%");//模糊查询
    query.exec();
    int k=-1;
    while(query.next()){
        ++k;
        for(int i=0;i<4;++i)ui->tableWidget->setItem(k,i,new QTableWidgetItem(query.value(i).toString()));
    }
    ui->book_search->clear();
}
void MainWindow::reshow(){
    this->show();
}
void MainWindow::create(){
    QSqlQuery query;
    QStandardItemModel *model=new QStandardItemModel();
    //brw->table=new QTableView();
    model->setColumnCount(1);
    model->setHeaderData(0,Qt::Horizontal,"book_name");
    query.prepare("select bname from book where bno in (select bno from book_borrow where ID=:ll)");
    query.bindValue(":ll",MainWindow::u);
    query.exec();
    int k=-1;
    while(query.next()){
        ++k;
        model->setItem(k,new QStandardItem(query.value(0).toString()));
    }
    brw->table->setModel(model);
    brw->table->setColumnWidth(0,200);
    brw->setWindowTitle("您已借");
    brw->exec();
}
/*void MainWindow::receiveData(QString data){
    ui->lineEdit->setText(data);
}
*/

book_student.cpp

#include "book_student.h"
#include "ui_book_student.h"
#include<QMessageBox>
#include"mainwindow.h"
#include<QTableView>
#include<QStandardItemModel>
#include<QDebug>
#include<QString>
book_student::book_student(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::book_student)
{
    ui->setupUi(this);
    book_student::rsw=new Reserve(this);
    this->setWindowTitle("学生");
    this->Signout=ui->pushButton;
    this->Borrowed=ui->pushButton_3;
    this->reserve=ui->pushButton_2;
}

book_student::~book_student()
{
    delete ui;
}
void book_student::on_pushButton_clicked()//sign out
{
    this->close();
}

void book_student::on_pushButton_3_clicked()//borrowed
{

}

void book_student::on_pushButton_2_clicked()//reserve
{
    rsw->exec();
}

book_delete.cpp

#include "book_delete.h"
#include "ui_book_delete.h"
#include<QSqlQuery>
#include<QMessageBox>
Book_Delete::Book_Delete(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Book_Delete)
{
    ui->setupUi(this);
    this->line=ui->lineEdit;
}

Book_Delete::~Book_Delete()
{
    delete ui;
}

void Book_Delete::on_pushButton_clicked()
{
    if(!ui->lineEdit->text().length()){
        QMessageBox::warning(this,"错误!","请输入Book_No!");
        return;
    }
    QSqlQuery query;
    query.prepare("delete from book where bno=:ll");
    query.bindValue(":ll",ui->lineEdit->text());
    query.exec();
    QMessageBox::information(this,"恭喜!","书籍信息及相关信息删除成功!");
}

book_borrow.cpp

#include "book_borrow.h"
#include "ui_book_borrow.h"

Book_Borrow::Book_Borrow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Book_Borrow)
{
    ui->setupUi(this);
    this->table=ui->tableView;
    //connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(buttonBox_accepted()));
}


Book_Borrow::~Book_Borrow()
{
    delete ui;
}
/*void Book_Borrow::on_pushButton_clicked()
{

}
void Book_Borrow::buttonBox_accepted(){
    emit sendData(ui->lineEdit->text());
}*/

book_administrator.cpp

#include "book_administrator.h"
#include "ui_book_administrator.h"
#include<QTableView>
#include<QStandardItemModel>
#include<QSqlQuery>
#include<QDebug>
book_administrator::book_administrator(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::book_administrator)
{
    ui->setupUi(this);
    this->setWindowTitle("管理员");
    this->Signout=ui->pushButton;
    this->book_rsw=ui->pushButton_3;//预约情况
    this->book_brw=ui->pushButton_2;//借还情况
    book_administrator::brw=new Book_Borrow();
    book_administrator::jiehuan=new Book_Borrow();
    book_administrator::chose=new Choose();
}

book_administrator::~book_administrator()
{
    delete ui;
}

void book_administrator::on_pushButton_clicked()//Sign Out
{
    this->close();
}

void book_administrator::on_pushButton_3_clicked()//学生预约
{
   //book_administrator::brw->table=new QTableView;
    QStandardItemModel *model=new QStandardItemModel();
    model->setColumnCount(2);
    model->setHeaderData(0,Qt::Horizontal,"Book_No");
    model->setHeaderData(1,Qt::Horizontal,"Student_ID");
    
    QSqlQuery query;
    query.exec("select * from reserve");
    int k=-1;
    while(query.next()){
        ++k;
        for(int i=0;i<2;++i)model->setItem(k,i,new QStandardItem(query.value(i).toString()));
    }
    book_administrator::brw->table->setModel(model);
    book_administrator::brw->setWindowTitle("学生预约情况");
    book_administrator::brw->exec();
}

void book_administrator::on_pushButton_4_clicked()//学生借还
{
    QStandardItemModel *model=new QStandardItemModel();
    model->setColumnCount(2);
    model->setHeaderData(0,Qt::Horizontal,"ID");
    model->setHeaderData(1,Qt::Horizontal,"Book_No");
    QSqlQuery query;
    query.exec("select * from book_borrow");
    int k=-1;
    while(query.next()){
        ++k;
        for(int i=0;i<2;++i)model->setItem(k,i,new QStandardItem(query.value(i).toString()));
    }
    book_administrator::jiehuan->table->setModel(model);
    book_administrator::jiehuan->setWindowTitle("学生借还情况");
    book_administrator::jiehuan->exec();
}

void book_administrator::on_pushButton_2_clicked()
{
    chose->setWindowTitle("请选择您要进行的操作");
    chose->exec();
}

admini_delete.cpp

#include "admini_delete.h"
#include "ui_admini_delete.h"
#include<QSqlQuery>
#include<QMessageBox>
Admini_Delete::Admini_Delete(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Admini_Delete)
{
    ui->setupUi(this);
    this->setWindowTitle("管理员删除");
}

Admini_Delete::~Admini_Delete()
{
    delete ui;
}

void Admini_Delete::on_pushButton_clicked()
{
    if(!ui->lineEdit->text().length()){
        QMessageBox::warning(this,"错误!","请输入管理员编号!");
        return;
    }
    QSqlQuery query;
    query.prepare("delete from administrator where ID=:ll");
    query.bindValue(":ll",ui->lineEdit->text());
    query.exec();
    QMessageBox::information(this,"恭喜!","信息删除成功!");
    ui->lineEdit->clear();
}

admini_insert.cpp

#include "adimi_insert.h"
#include "ui_adimi_insert.h"
#include<QSqlQuery>
#include<QMessageBox>
Adimi_Insert::Adimi_Insert(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Adimi_Insert)
{
    ui->setupUi(this);
    this->setWindowTitle("管理员添加");
}

Adimi_Insert::~Adimi_Insert()
{
    delete ui;
}

void Adimi_Insert::on_pushButton_clicked()
{
    if(!(ui->lineEdit->text().length()&&ui->lineEdit_2->text().length())){
        QMessageBox::warning(this,"错误!","请填入信息!");
        return;
    }
    QSqlQuery query;
    query.prepare("insert into administrator values(:kk,:ll)");
    query.bindValue(":kk",ui->lineEdit->text());
    query.bindValue(":ll",ui->lineEdit_2->text());
    query.exec();
    QMessageBox::information(this,"恭喜!","插入成功!");
    ui->lineEdit->clear();
    ui->lineEdit_2->clear();
}

book_superadministrator.cpp

#include "book_super_administrator.h"
#include "ui_book_super_administrator.h"

book_super_administrator::book_super_administrator(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::book_super_administrator)
{
    ui->setupUi(this);
    this->setWindowTitle("超级管理员");
    this->Signout=ui->pushButton;
    book_super_administrator::ade=new Admini_Delete();
    book_super_administrator::ait=new Adimi_Insert();
    book_super_administrator::sde=new Stu_Delete();
    book_super_administrator::sit=new Stu_Insert();
}

book_super_administrator::~book_super_administrator()
{
    delete ui;
}

void book_super_administrator::on_pushButton_clicked()//Sign Out
{
    this->close();
}

void book_super_administrator::on_pushButton_2_clicked()//管理员删除
{

    ade->exec();
}

void book_super_administrator::on_pushButton_3_clicked()//管理员添加
{
    ait->exec();
}

void book_super_administrator::on_pushButton_4_clicked()//学生删除
{
    sde->exec();
}

void book_super_administrator::on_pushButton_5_clicked()//学生添加
{
    sit->exec();
}

choose.cpp

#include "choose.h"
#include "ui_choose.h"
#include<QMessageBox>
Choose::Choose(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Choose)
{
    ui->setupUi(this);
    Choose::ist=new Insert();
    Choose::dlt=new Book_Delete();
}

Choose::~Choose()
{
    delete ui;
}

void Choose::on_pushButton_clicked()
{
    ist->setWindowTitle("请填入相关信息");
    ist->exec();
}

void Choose::on_pushButton_2_clicked()
{
    QMessageBox::information(this,"注意!","删除书籍同时会删除学生的预约和借阅信息!");
    dlt->setWindowTitle("请输入要删除的图书编号");
    dlt->line->setPlaceholderText("请输入Book_No");
    dlt->exec();
}

insert.cpp

#include "insert.h"
#include "ui_insert.h"
#include<QMessageBox>
#include<QSqlQuery>
Insert::Insert(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Insert)
{
    ui->setupUi(this);
}

Insert::~Insert()
{
    delete ui;
}

void Insert::on_pushButton_clicked()
{
    if(!(ui->Book_ID->text().length()&&ui->Book_Name->text().length()&&ui->Book_Author->text().length()&&ui->Book_number->text().length())){
        QMessageBox::warning(this,"错误!","请勿空输入!");
        return;
    }
    QSqlQuery query;
    query.prepare("insert into book values(:hh,:jj,:kk,:ll)");
    query.bindValue(":hh",ui->Book_ID->text());
    query.bindValue(":jj",ui->Book_Name->text());
    query.bindValue(":kk",ui->Book_Author->text());
    query.bindValue(":ll",ui->Book_number->text().toInt());
    query.exec();
    QMessageBox::information(this,"恭喜!","插入书籍信息成功!");
}

reserve.cpp

#include "reserve.h"
#include "ui_reserve.h"
#include<QString>
#include<QSqlQuery>
#include<QMessageBox>
#include<mainwindow.h>
Reserve::Reserve(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Reserve)
{
    ui->setupUi(this);
    this->setWindowTitle("预约书籍");
    ui->book_search->setPlaceholderText("请输入书名");
    ui->resline->setPlaceholderText("请输入Book_No");
    ui->tableWidget->setRowCount(100);     //设置行数为10
    ui->tableWidget->setColumnCount(4);   //设置列数为5
    ui->tableWidget->setColumnWidth(1,200);
    ui->tableWidget->setColumnWidth(2,200);
    QStringList header;
    header<<"Book_No"<<"Book_Name"<<"Book_Author"<<"Book_number";
    ui->tableWidget->setHorizontalHeaderLabels(header);
    QSqlQuery query;
    query.exec("select * from book");
    int k=-1;
    while(query.next()){
        ++k;
        for(int i=0;i<4;++i)ui->tableWidget->setItem(k,i,new QTableWidgetItem(query.value(i).toString()));

    }
}

Reserve::~Reserve()
{
    delete ui;
}

void Reserve::on_pushButton_clicked()
{
    QString book_name=ui->book_search->text();
    QSqlQuery query;
    if(book_name.length()==0){QMessageBox::warning(this,"错误","请输入书名!","确定");return;}
    ui->tableWidget->clearContents();
    query.prepare("select * from book where bname like :ll");
    query.bindValue(":ll","%"+book_name+"%");//模糊查询
    query.exec();
    int k=-1;
    while(query.next()){
        ++k;
        for(int i=0;i<4;++i)ui->tableWidget->setItem(k,i,new QTableWidgetItem(query.value(i).toString()));
    }
}

void Reserve::on_pushButton_2_clicked()
{
    QString book_No=ui->resline->text();
    QSqlQuery query;
    if(book_No.length()==0){QMessageBox::warning(this,"错误","请输入Book_No!","确定");return;}
    query.prepare("select bnum from book where bno=:ll");
    query.bindValue(":ll",book_No);
    query.exec();
    query.first();
    int val=query.value(0).toInt();
    if(val){
        QMessageBox::information(this,QString("恭喜!"),QString("您已预约成功,请在24小时之内入图书馆借阅!"));
        query.prepare("update book set bnum =bnum-1 where bno=:ll");
        query.bindValue(":ll",book_No);
        query.exec();
        query.prepare("insert into reserve values (:ll,:kk)");
        query.bindValue(":kk",MainWindow::u);
        query.bindValue(":ll",book_No);
        query.exec();
    }else{
        QMessageBox::warning(this,QString("Sorry!"),QString("本书不存在或库存为空"));
    }
}

stu.delete.cpp

#include "stu_delete.h"
#include "ui_stu_delete.h"
#include<QSqlQuery>
#include<QMessageBox>
Stu_Delete::Stu_Delete(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Stu_Delete)
{
    ui->setupUi(this);
    this->setWindowTitle("学生删除");
}

Stu_Delete::~Stu_Delete()
{
    delete ui;
}

void Stu_Delete::on_pushButton_clicked()
{
    if(!ui->lineEdit->text().length()){
        QMessageBox::warning(this,"错误!","请输入学生编号!");
    }
    QSqlQuery query;
    query.prepare("delete from student where ID=:ll");
    query.bindValue(":ll",ui->lineEdit->text());
    query.exec();
    QMessageBox::information(this,"恭喜!","删除成功!");
    ui->lineEdit->clear();
}

stu.insert.cpp

#include "stu_insert.h"
#include "ui_stu_insert.h"
#include<QSqlQuery>
#include<QMessageBox>
Stu_Insert::Stu_Insert(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Stu_Insert)
{
    ui->setupUi(this);
    this->setWindowTitle("学生添加");
}

Stu_Insert::~Stu_Insert()
{
    delete ui;
}

void Stu_Insert::on_pushButton_clicked()
{
    if(!(ui->lineEdit->text().length()&&ui->lineEdit_2->text().length())){
        QMessageBox::warning(this,"错误!","请输入信息!");
        return;
    }
    QSqlQuery query;
    query.prepare("insert into student values(:kk,:ll)");
    query.bindValue(":kk",ui->lineEdit->text());
    query.bindValue(":ll",ui->lineEdit_2->text());
    query.exec();
    QMessageBox::information(this,"恭喜!","插入成功!");
    ui->lineEdit->clear();
    ui->lineEdit_2->clear();
}

6.总结

虽然这个项目做的很烂,但是我觉的首先收获还是很大的,这是我第一个用C++写的GUI程序,也让我终于感觉到一点类的继承派生在具体应用中的体现,然后就是我感觉Qt和VB好像,感觉要把C++ Primer重新看一遍,加油!

猜你喜欢

转载自blog.csdn.net/Leslie5205912/article/details/84303587