基于QT的C++课设(文件放在最后)

这学期突发奇想打算写一篇博客,算是给未来大一的朋友们一点思路吧。这次我写的是一个学生查询系统,就是通过输入年级和班级筛选人员,或者是直接输入学号进行查询。这个是我的一个目录,因为技术不够,是存在一些bug的,这个之后再说。

基于QT的C++课设(文件放在最后)_第1张图片

forms里面是一些ui界面,也就是说这个程序是有3个同的界面。上面对应的就是一些头文件和资源文件,在.pro里面我加入了一些东西,使图标不是变成我选择图片。

头文件里面有一个global.h,这个里面我把所有的头文件都加载一遍,省的给我报错。

基于QT的C++课设(文件放在最后)_第2张图片

 基于QT的C++课设(文件放在最后)_第3张图片

基于QT的C++课设(文件放在最后)_第4张图片 这里建议先进行UI设计,这样能方便很多

之后选择按钮,转到槽这样就建立一个函数了,注意不要多次转到槽,不然最后会有报错,重定义,得到.pro里面删除掉。

    QString _account = ui->lineEdit->text();//获取输入的账号密码
            QString _register =ui->lineEdit_2->text();

应该是根据这个达到输入,之后进行判定就容易很多了。

 

接下来说一下账号的保存,这里我没有设计注册一部分,有兴趣可以试一下。

账号我选择存储到txt文件中,通过文件操作,让软件与其产生关联这个头文件我都放到了global里面

 QFile file("NNC.txt");
    if(! file.open(QIODevice::ReadOnly | QIODevice::Text))//以只读模式打开文件
        qDebug()<lineEdit->text();//获取输入的账号密码
            QString _register =ui->lineEdit_2->text();
            if(_account==array1 && _register==array2)//判断输入的与储存的是否相同,相同则进入窗口
            {
                this->close();
                Form *w=new Form;
                w->show();

                break;
            }
            if(file.atEnd()==true)                             //遍历文件后都不同则弹出警告对话框
            {
                int ret=QMessageBox::warning(this,tr("登录失败!!"),tr("账号或密码错误!!"));
            }
            array1 += file.readLine();
        }
        while(file.atEnd() == false);
}

这里就是一个简单的判断账号存在问题,不过似乎包装成exe就会出现bug,大佬帮我评论

在form.cpp里面,因为时间关系,我直接选择让界面进入第三界面,第三界面,我选择加如返回,加强人机交互,这里的bug让人员不显示,我直接强行输出,就是俺条件有限,领会精神


Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
}

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

void Form::on_lineEdit_cursorPositionChanged(int arg1, int arg2)
{
    QString mString = ui->lineEdit->text();
    connect(ui->lineEdit, SIGNAL(returnPressed()), this, SLOT(calSlot()));
    QString ads=mString;

}

void Form::on_pushButton_clicked()
{
    QString ads;
    QFile file("NNC.txt");

                this->close();
                Form2 *w=new Form2;
                w->show();

}            

这里是一个输出,但是有莫名bug,真是由于时间关系,我只能将错就错

#include "form2.h"
#include "ui_form2.h"
#include"form.h"
#include"QTextEdit"

#include "global.h"

Form2::Form2(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form2)
{
    ui->setupUi(this);
}

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


void Form2::on_pushButton_clicked()
{
    this->close();
  Form *w=new Form;
  w->show();
}



void Form2::on_textEdit_destroyed()
{

    //班级
    QString ads;
       QString st=ads;
        QFile file("NNC.txt");
        if(! file.open(QIODevice::ReadOnly | QIODevice::Text))//以只读模式打开文件
            qDebug()<textEdit->append(st);

                break;
            }
        }
         while(file.atEnd() == false);
}

void Form2::on_textEdit_2_destroyed()
{
    //姓名
         QString ads;
           QString str=ads;
            QFile file("NNC.txt");
            if(! file.open(QIODevice::ReadOnly | QIODevice::Text))//以只读模式打开文件
                qDebug()<textEdit->append(str);

                        break;
                    }
            }
             while(file.atEnd() == false);
}

总之,我从一个不知道QT是啥,到做一个程序用了半个月,QT的界面实现比VS容易很多。

这里我以防万一,在build和untitled里都加了一遍

基于QT的C++课设(文件放在最后)_第5张图片

基于QT的C++课设(文件放在最后)_第6张图片

 

到这里,在QT上的已经能运行了,

首先将图片转换为.ico

https://www.easyicon.net/covert/ 这是一个在线转换图标的网站,可以把png转成ico或icns格式

接下来在.pro中加

RC_ICONS = photo.ico
//这里photo.ico就是图标文件的名字

 基于QT的C++课设(文件放在最后)_第7张图片

之后清理项目,

运行 qmake

运行项目

没有问题,就可以进行exe程序的转化了。

.将项目以release方式构建,在生成的release文件夹中有.exe文件,但不能执行。

2.将.exe文件单独放进一个新建的文件夹里。

3.打开Qt for desktop命令行工具,输入命令windeployqt基于QT的C++课设(文件放在最后)_第8张图片

4.将.exe文件直接拖进命令行。

5.搞定收工

文件网盘https://pan.baidu.com/s/15ivp19dEmSujzNzTYBlKpA 

提取码:8r6n

你可能感兴趣的:(c++)