运行环境:
QT5.7.1、vs2013、win10-64bit
1 在已经存在主窗口时,创建一个新的登录窗口
vs2013菜单->项目->Add Qt Class...
在弹出窗口选择GUI窗口类“Qt GUI Class”,类名改为“loginWindow”,之后点击Add->next->finish
项目列表中新增加“loginWindow.ui”“ui_loginWindow.h”“loginWindow.h”“loginWindow.cpp”
2 打开“loginWindow.ui”文件,进入QT设计器界面
窗体名字改为“登录界面”
添加label,属性objectName改为“main_label”,属性text改为“图像识别测流系统”
添加label,属性objectName改为“name_label”,属性text改为“用户名:”
添加label,属性objectName改为“password_label”,属性text改为“密码:”
添加QlineEdit,属性objectName改为“name_text”
添加QlineEdit,属性objectName改为“pwd_text”
添加button,属性objectName改为“loginButton”,属性text改为“登录”
添加button,属性objectName改为“cnacelButton”,属性text改为“取消”
3 QT设计器界面,编辑信号和槽,添加“登录”和“取消”两个按钮的槽函数
4 进入vs2013,编辑源代码
main.cpp
1)添加 头文件#include"loginwindow.h"
2)屏蔽主窗口,增加登录窗口
//QtGuitest1 w; //定义并创建主窗口
//w.show();//显示主窗口
loginwindow lw; //定义并创建登录窗口
lw.show();//显示登录窗口
main.cpp 源码
#include"loginwindow.h"//登录窗口
#include "QtGuitest1.h"//主窗口
// QApplication应用程序类,使用图形应用程序必须使用QApplication 对象
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);//定义并创建应用程序
//QtGuitest1 w; //定义并创建主窗口
//w.show();//显示主窗口
loginwindow lw; //定义并创建登录窗口
lw.show();//显示登录窗口
return a.exec();//应用程序运行
}
loginwindow.h
1)添加头文件
#include "QtGuitest1.h"//主窗口
#include<QLineEdit>
#include<QMessageBox>
2)定义主窗口QtGuitest1 w; //定义并创建主窗口
3)添加槽函数声明
private slots:
void loginbt_clicked(); //登录
void cancleloginbt_clicked(); //取消
loginwindow.h源码
#pragma once
#include <QWidget>
#include "ui_loginwindow.h"
#include "QtGuitest1.h"//主窗口
#include<QLineEdit>
#include<QMessageBox>
class loginwindow : public QWidget
{
Q_OBJECT
public:
loginwindow(QWidget *parent = Q_NULLPTR);
~loginwindow();
private:
Ui::loginwindow ui;
QtGuitest1 w; //定义并创建主窗口
private slots:
void loginbt_clicked(); //登录
void cancleloginbt_clicked(); //取消
};
loginwindow.cpp
1)密码栏输入为星号
ui.pwd_text->setEchoMode(QLineEdit::Password);//密码显示为星号
2)登录按钮槽函数定义void loginwindow::loginbt_clicked()
2)取消按钮槽函数定义void loginwindow::cancleloginbt_clicked()
loginwindow.cpp源码
#include "loginwindow.h"
loginwindow::loginwindow(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pwd_text->setEchoMode(QLineEdit::Password);//密码显示为星号
}
loginwindow::~loginwindow()
{
}
//登录按钮
void loginwindow::loginbt_clicked()
{
if (this->ui.name_text->text().trimmed() == tr("admin")
&& this->ui.pwd_text->text().trimmed() == tr("admin"))
{
//QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("登录成功!"), QMessageBox::Yes);
this->close();
w.show(); //显示主窗口
}
else if (this->ui.name_text->text().trimmed() == tr("")
|| this->ui.pwd_text->text().trimmed() == tr(""))
{
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("用户名或密码不能为空!"), QMessageBox::Yes);
}
else
{
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("用户名或密码错误!"), QMessageBox::Yes);
this->ui.name_text->clear();
this->ui.pwd_text->clear();
this->ui.name_text->setFocus();
}
}
//取消按钮
void loginwindow::cancleloginbt_clicked()
{
this->close();
}
参考