这学期突发奇想打算写一篇博客,算是给未来大一的朋友们一点思路吧。这次我写的是一个学生查询系统,就是通过输入年级和班级筛选人员,或者是直接输入学号进行查询。这个是我的一个目录,因为技术不够,是存在一些bug的,这个之后再说。
forms里面是一些ui界面,也就是说这个程序是有3个同的界面。上面对应的就是一些头文件和资源文件,在.pro里面我加入了一些东西,使图标不是变成我选择图片。
头文件里面有一个global.h,这个里面我把所有的头文件都加载一遍,省的给我报错。
之后选择按钮,转到槽这样就建立一个函数了,注意不要多次转到槽,不然最后会有报错,重定义,得到.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上的已经能运行了,
首先将图片转换为.ico
https://www.easyicon.net/covert/ 这是一个在线转换图标的网站,可以把png转成ico或icns格式
接下来在.pro中加
RC_ICONS = photo.ico
//这里photo.ico就是图标文件的名字
之后清理项目,
运行 qmake
运行项目
没有问题,就可以进行exe程序的转化了。
.将项目以release方式构建,在生成的release文件夹中有.exe文件,但不能执行。
2.将.exe文件单独放进一个新建的文件夹里。
3.打开Qt for desktop命令行工具,输入命令windeployqt
4.将.exe文件直接拖进命令行。
5.搞定收工
文件网盘https://pan.baidu.com/s/15ivp19dEmSujzNzTYBlKpA
提取码:8r6n