1、main.cpp
#include "widget.h"
#include"second.h"
#include"password.h"
#include <QApplication>
#include"reg.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
Second s;
password p;
reg reg;
QObject::connect(&w,&Widget::jump,&s,&Second::jump_slot);
QObject::connect(&s,&Second::jump,&w,&Widget::jump_slot);
QObject::connect(&w,&Widget::jump_password,&p,&password::jump_first);
QObject::connect(&p, &password::changePassword, &w, &Widget::setNewPassword);
QObject::connect(&w, &Widget::jump_register, ®, ®::show);
QObject::connect(®, ®::registerSuccess, &w, &Widget::onRegisterSuccess);
w.show();
return a.exec();
}
2.widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include"password.h"
#include <QDebug>
static int flag=0;
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
,m_username("admin")
,m_password("123456")
{
ui->setupUi(this);
ui->Username->setPixmap(QPixmap(":/pictrue/pictrue/userName.jpg"));
ui->Username->setScaledContents(true);
ui->PassWord->setPixmap(QPixmap(":/pictrue/pictrue/passwd.jpg"));
ui->PassWord->setScaledContents(true);
QMovie *mv=new QMovie(":/pictrue/pictrue/zz.gif");
ui->Head->setMovie(mv);
mv->start();
ui->Head->setScaledContents(true);
this->setWindowFlag(Qt::FramelessWindowHint);
connect(ui->LogIn,&QPushButton::clicked,[&](){
if(ui->UserEdit->text() == m_username && ui->PassEdit->text() == m_password)
{
qDebug() << "登录成功" <<endl;
this->close();
emit jump();
}else
{
flag++;
qDebug() << "登陆失败" <<endl;
ui->UserEdit->setText(nullptr);
ui->PassEdit->setText(nullptr);
if(flag==5)
{
QMessageBox msg(QMessageBox::Warning,
"警告"
,"您已经输入5次,请稍后再试"
,QMessageBox::Yes
,this);
int res=msg.exec();
if(res==QMessageBox::Yes)
{
this->close();
flag=0;
}
}
}
});
}
void Widget::jump_slot()
{
this->show();
}
void Widget::setNewPassword(const QString &newUser, const QString &newPwd)
{
m_username = newUser;
m_password = newPwd;
}
void Widget::onRegisterSuccess(const QString &user, const QString &pwd)
{
m_username = user;
m_password = pwd;
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_fun1_clicked()
{
emit jump_password();
}
void Widget::on_fun2_clicked()
{
emit jump_register();
}
void Widget::on_helpButton_clicked()
{
QMessageBox::information(this, "help", "不,你不需要帮助");
}
3、widget.h
#include <QPushButton>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
signals:
void jump();
void jump_password();
void jump_register();
public slots:
void jump_slot();
void setNewPassword(const QString &newUser, const QString &newPwd);
void onRegisterSuccess(const QString &user, const QString &pwd);
private slots:
void on_fun1_clicked();
void on_fun2_clicked();
void on_helpButton_clicked();
private:
Ui::Widget *ui;
QString m_username;
QString m_password;
};
#endif // WIDGET_H
4、second.cpp
#include <QPushButton>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
signals:
void jump();
void jump_password();
void jump_register();
public slots:
void jump_slot();
void setNewPassword(const QString &newUser, const QString &newPwd);
void onRegisterSuccess(const QString &user, const QString &pwd);
private slots:
void on_fun1_clicked();
void on_fun2_clicked();
void on_helpButton_clicked();
private:
Ui::Widget *ui;
QString m_username;
QString m_password;
};
#endif // WIDGET_H
5、scond.h
#ifndef SECOND_H
#define SECOND_H
#include <QWidget>
namespace Ui {
class Second;
}
class Second : public QWidget
{
Q_OBJECT
public:
explicit Second(QWidget *parent = nullptr);
~Second();
signals:
void jump();
public slots:
void jump_slot();
private slots:
void on_pushButton_clicked();
private:
Ui::Second *ui;
};
#endif // SECOND_H
6、password.cpp
#include "password.h"
#include "ui_password.h"
#include "widget.h"
#include <QMessageBox>
password::password(QWidget *parent) :
QWidget(parent),
ui(new Ui::password)
{
ui->setupUi(this);
}
password::~password()
{
delete ui;
}
void password::jump_first()
{
this->show();
}
void password::on_pushButton_clicked()
{
if(ui->userNameEdit->text().isEmpty() | ui->passWordEdit->text().isEmpty())
{
QMessageBox msg(QMessageBox::Warning
,"警告"
,"账号或密码不能为空"
,QMessageBox::Yes
,this);
int res=msg.exec();
if(res==QMessageBox::Yes)
{
ui->userNameEdit->clear();
ui->passWordEdit->clear();
}
}else
{
QString newUser=ui->userNameEdit->text();
QString newPwd=ui->passWordEdit->text();
emit changePassword(newUser,newPwd);
QMessageBox::information(this, "提示", "密码修改成功!");
this->close();
}
}
7、password.h
#ifndef SECOND_H
#define SECOND_H
#include <QWidget>
namespace Ui {
class Second;
}
class Second : public QWidget
{
Q_OBJECT
public:
explicit Second(QWidget *parent = nullptr);
~Second();
signals:
void jump();
public slots:
void jump_slot();
private slots:
void on_pushButton_clicked();
private:
Ui::Second *ui;
};
#endif // SECOND_H
8、reg.cpp
#include "reg.h"
#include "ui_reg.h"
#include <QMessageBox>
#include <QRegExp>
#include <QRegExpValidator>
reg::reg(QWidget *parent) :
QWidget(parent),
ui(new Ui::reg)
{
ui->setupUi(this);
}
reg::~reg()
{
delete ui;
}
void reg::on_login_clicked()
{
QString user = ui->userEdit->text().trimmed();
QString pwd = ui->pwdEdit->text();
QString confirmPwd = ui->confirmPwdEdit->text();
// 输入验证
if (user.isEmpty() || pwd.isEmpty()) {
QMessageBox::warning(this, "警告", "用户名和密码不能为空!");
return;
}
if (pwd != confirmPwd) {
QMessageBox::warning(this, "警告", "两次密码输入不一致!");
return;
}
// 发送注册成功信号
emit registerSuccess(user, pwd);
QMessageBox::information(this, "提示", "注册成功!");
this->close();
}
9、reg.h
#ifndef REG_H
#define REG_H
#include <QWidget>
#include <QString>
namespace Ui {
class reg;
}
class reg : public QWidget
{
Q_OBJECT
public:
explicit reg(QWidget *parent = nullptr);
~reg();
signals:
void registerSuccess(const QString &user, const QString &pwd);
private slots:
void on_registerBtn_clicked();
void on_login_clicked();
private:
Ui::reg *ui;
};
#endif // REG_H