目录
?
主函数
#include "widget.h"
#include "loginsuccess.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
LoginSuccess s; //实例化登录成功界面
//将两个界面连接
QObject::connect(&w, &Widget::loginSuccess_signal,
&s, &LoginSuccess::loginSuccess_slot);
w.show();
return a.exec();
}
源文件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QMovie *mv=new QMovie(":/pictrue/plane.gif"); //创建一个动图
ui->logo_label->setMovie(mv); //将动图插入标签
mv->start(); //启动动图
ui->logo_label->setScaledContents(true); //让动图自适应标签大小
ui->userName_label->setPixmap(QPixmap(":/pictrue/user.png")); //设置标签显示图片
ui->userName_label->setScaledContents(true); //让图片自适应标签大小
ui->password_label->setPixmap(QPixmap(":/pictrue/passwd.jpg"));//设置标签显示图片
ui->password_label->setScaledContents(true); //让图片自适应标签大小
ui->password_edit->setEchoMode(QLineEdit::Password); //设置行编辑器显示模式为Password
//取消按钮 基于qt4版本手动连接信号和自定义的槽
connect(ui->cancel_btn,SIGNAL(clicked()),this,SLOT(cancel_slot()));
//登录按钮 基于qt5版本手动连接信号和自定义的槽
connect(ui->login_btn, &QPushButton::clicked, this, &Widget::login_slot);
}
Widget::~Widget()
{
delete ui;
}
/*自定义取消槽函数*/
void Widget::cancel_slot()
{
/*基于静态成员函数实现对话框*/
int ret= QMessageBox::question(this,
"登录",
"您是否确定要退出登录?",
QMessageBox::Yes | QMessageBox::No);
/*判断用户选中的按钮*/
if(ret == QMessageBox::Yes)
{
this->close(); //关闭登录窗口
}
else if(ret == QMessageBox::No)
{
//关闭对话框
}
}
/*自定义登录槽函数*/
void Widget::login_slot()
{
/*账号密码匹配*/
if(ui->userName_edit->text()=="admin" && ui->password_edit->text()=="123456")
{
/*基于属性版有参构造实现对话框*/
QMessageBox msg(QMessageBox::Information,"登录","登录成功",
QMessageBox::Ok,this );
int ret= msg.exec(); //调用exec弹出对话框
if(ret==QMessageBox::Ok)
{
emit this->loginSuccess_signal(); //触发登录成功信号
this->close(); //退出窗口
}
}
else/*账号密码不匹配*/
{
/*基于属性版有参构造实现对话框*/
QMessageBox msg(QMessageBox::Critical,"登录","账号和密码不匹配,是否重新登录",
QMessageBox::Yes|QMessageBox::No,this );
int ret= msg.exec(); //调用exec弹出对话框
/*判断用户选中的按钮*/
if(ret==QMessageBox::Yes)
{
ui->password_edit->setText(""); //将密码文本清空
}else if(ret==QMessageBox::No)
{
this->close(); //退出窗口
}
}
}
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMovie> //动图头文件
#include <QDebug> //qDebug头文件
#include <QMessageBox> //消息对话框头文件
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
public slots:
void cancel_slot(); //声明取消按钮的槽函数
void login_slot(); //声明登录按钮的槽函数
signals:
void loginSuccess_signal(); //登录成功的信号
private slots:
void on_login_btn_clicked();
};
#endif // WIDGET_H
登录成功界面源文件
#include "loginsuccess.h"
#include "ui_loginsuccess.h"
LoginSuccess::LoginSuccess(QWidget *parent) :
QWidget(parent),
ui(new Ui::LoginSuccess)
{
ui->setupUi(this);
}
LoginSuccess::~LoginSuccess()
{
delete ui;
}
/*登录成功的槽函数*/
void LoginSuccess::loginSuccess_slot()
{
this->show(); //显示登录成功后的界面
}
登录成功界面头文件
#ifndef LOGINSUCCESS_H
#define LOGINSUCCESS_H
#include <QWidget>
namespace Ui {
class LoginSuccess;
}
class LoginSuccess : public QWidget
{
Q_OBJECT
public:
explicit LoginSuccess(QWidget *parent = nullptr);
~LoginSuccess();
public slots:
void loginSuccess_slot(); //登录成功的槽函数
private:
Ui::LoginSuccess *ui;
};
#endif // LOGINSUCCESS_H