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

1、main.cpp

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

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

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

4、second.cpp

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

cpp 复制代码
#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

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

cpp 复制代码
#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

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

cpp 复制代码
#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
相关推荐
yinke小琪1 小时前
说说hashCode() 和 equals() 之间的关系
java·后端·面试
若鱼19192 小时前
Kafka如何配置生产者拦截器和消费者拦截器
java·kafka
渣哥2 小时前
Java 自适应自旋锁机制详解:原理、优缺点与应用场景
java
咕噜咕噜啦啦2 小时前
Qt之快捷键、事件处理、自定义按键——完成记事本项目
开发语言·qt
摇滚侠2 小时前
java语言中,list<String>转成字符串,逗号分割;List<Integer>转字符串,逗号分割
java·windows·list
烽学长2 小时前
(附源码)基于Spring Boot的宿舍管理系统设计
java
lssjzmn2 小时前
基于Spring Boot与Micrometer的系统参数监控指南
java·spring boot·数据可视化
柯南二号2 小时前
【Java后端】Spring Boot 集成雪花算法唯一 ID
java·linux·服务器
纤瘦的鲸鱼2 小时前
Docker 从入门到实践:容器化技术核心指南
java·docker·容器