9.12-QT-基本登陆界面实现

发布于:2025-09-15 ⋅ 阅读:(22) ⋅ 点赞:(0)

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, &reg, &reg::show);
    QObject::connect(&reg, &reg::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


网站公告

今日签到

点亮在社区的每一天
去签到