前言
本文演示如何快速照搬【QT入门到晋级】创建第一个QT项目上传的源代码,并按照模块化加入用户登录页面为例(附上源代码)。
一、建立自己的本地QT工程
1、源码目录操作
创建一个全英文的目录,删掉目录中的.pro.user文件,然后鼠标双击.pro工程文件,Qt creator会打开编译器选择页面,如下图1.1所示:
图1.1配置编译环境
2、选择版本
在左下角选择Release版本作为运行版本,如下图1.2所示:
图1.2版本选择
3、配置运行目录
在左侧菜单栏的【项目】中,修改【构建目录】,可以先浏览选择存在的目录,然后手动填写一个目录(编辑框中的字体会变成红色,意思是这个目录不存在,不要担心!Qt creator会自动创建这个目录),如下图1.3所示:
图1.3配置运行目录
配置完成后,点击左下角的运行按钮即可运行成功,注意如果源码的路径带有中文,qmake是编译不成功的。
二、加入自己的代码(登录页面功能)
1、创建新的代码文件(UI界面及cpp、h文件)
点QT creator左上角的【文件】选择“新建文件或项目”,选择“Qt/Qt设计师界面类”,点击选择,如下图2.1.1所示
图2.1.1创建新的UI界面
在设计器界面类中选择“widget”(空的窗口),如何点击【下一步】。如下图2.2所示:
图2.1.2选择界面布局
为了模块化的管理代码,以及区分好各个模块的作用,从项目建设开始阶段,就尽量编译把新加入的代码文件与main.cpp文件放在同一个目录下,在本项目中,我创建了src目录用于放自身开发的代码(如果是动态库文件,则另外放在lib目录下,在后续文章会怎么给出完整的开发框架设计),登录界面涉及页面间的调整,在src目录下创建contrl存放,然后点击【下一步】,如下图2.1.3.1和图2.1.3.2所示:
图2.1.3.1 创建代码文件保存目录
图2.1.3.2 设置类名及保存路径
点击文件即可,如下图2.1.4所示
图2.1.4完成创建
此时,在.pro文件中和左侧的项目树中,可以看到新增的文件,如下图2.1.5所示
图2.1.5新增的登录界面的配置选项及代码文件
2、增加代码
(1)设计login的UI文件
增加两个文本编辑框,提供给用户输入用户名和密码,增加两个按钮,提供给用户进行登录及退出操作,按钮的的事件操作涉及【信号和槽】机制,只需右键点击按钮,点击“转到槽...”,然后选择QT自带的单击信号(click)即可,如下图2.2.1和图2.2.2所示
图2.2.1 login的UI设计页面
图2.2.2 QT自带的的事件
login.h的代码如下,注释部分为新增的代码:
#ifndef LOGIN_H
#define LOGIN_H
#include "mainwindow.h"//登录页面要跳转到主界面,这里要引用主界面的头文件
#include <QWidget>
namespace Ui {
class login;
}
class login : public QWidget
{
Q_OBJECT
public:
explicit login(QWidget *parent = nullptr);
~login();
private slots:
void on_login_btn_clicked();//登录按钮的槽函数
void on_exit_btn_clicked();//退出按钮的槽函数
private:
Ui::login *ui;
MainWindow *mainwindow;//登录页面要跳转到主界面,在这里声明
};
#endif // LOGIN_H
这里简单的描述下【信号和槽】的过程:【转到槽】是把on_login_btn_clicked()槽函数与【登录】按钮的单击事件进行绑定,当用户点击【登录】按钮时,自动发送鼠标单击的信号,QT捕获并自动调用on_login_btn_clicked()槽函数执行,以下是login.cpp的源代码,注释部分为新增的代码:
#include "src/contrl/login.h"
#include "ui_login.h"
#include <QString>
login::login(QWidget *parent) :
QWidget(parent),
ui(new Ui::login)
{
ui->setupUi(this);
}
login::~login()
{
delete ui;
}
//登录按钮
void login::on_login_btn_clicked()
{ //获取内容用text()方法
QString name = ui->lineEdit_name->text();//获取登录窗口上的lineEdit_name文本编辑框的内容
QString password = ui->lineEdit_pwd->text();//获取登录窗口上的lineEdit_pwd文本编辑框的内容
if(name=="admin" && password=="123"){
mainwindow = new MainWindow();
mainwindow->show();// 显示主窗口
this->hide();// 隐藏窗口
}else{
this->ui->label_msg->setText("用户名或者密码错误");//修改内容用setText方法
}
}
//退出按钮
void login::on_exit_btn_clicked()
{
this->close();//关闭窗口
}
结尾
源码见文章开头绑定的资源,调整了login.ui到与mainwindow.ui同一个目录,方便管理。如果喜欢本博主分享QT项目知识,请收藏我的QT栏的导读文章,新上传的文章都会更新到导读中。