qt完善登录框

完善登录框

点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容"账号密码不匹配,是否重新登录",给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。

如果账号和密码匹配,则弹出信息对话框,给出提示信息为"登录成功",给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面

点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录

要求:消息对话框,对象版和静态成员函数版至少各一个:

widget.cpp

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    c = new com;
    connect(this, &MainWindow::jump, c, &com::jump_slot);

    //设置窗口标题及图像
    this->setFixedSize(480, 300);
    this->setWindowTitle("华清远见");
    this->setWindowIcon(QIcon(":/icon/wodepeizhenshi.png"));

    //设置背景
    QLabel* lab1 = new QLabel(this);
    lab1->resize(480,140);
    lab1->setPixmap(QPixmap(":/icon/logo.png"));
    lab1->setScaledContents(true);

    //设置标签
    QLabel* lab2 = new QLabel(this);
    QLabel* lab3 = new QLabel(this);
    lab2->resize(32, 36);
    lab2->move(50, 160);
    lab2->setPixmap(QPixmap(":/icon/userName.jpg"));
    lab2->setScaledContents(true);
    lab3->resize(32, 36);
    lab3->move(50, 210);
    lab3->setPixmap(QPixmap(":/icon/passwd.jpg"));
    lab3->setScaledContents(true);

    //设置行文本
    lin1 = new QLineEdit(this);
    lin1->resize(270, 32);
    lin1->move(lab2->x()+40,lab2->y()+2);
    lin1->setPlaceholderText("账号/邮箱/手机号");

    lin2 = new QLineEdit(this);
    lin2->resize(270, 32);
    lin2->move(lab3->x()+40,lab3->y()+2);
    lin2->setEchoMode(QLineEdit::Password);

    //设置按钮
    but1 = new QPushButton(this);
    but1->resize(80, 35);
    but1->move(120, 255);
    but1->setIcon(QIcon(":/icon/login.png"));
    but1->setText("登录");

    but2 = new QPushButton(this);
    but2->resize(80, 35);
    but2->move(280, 255);
    but2->setIcon(QIcon(":/icon/cancel.png"));
    but2->setText("取消");

    //设置选项
    QCheckBox *rad1 = new QCheckBox(this);
    rad1->move(lin1->x()+280,lin1->y());
    rad1->setText("自动登录");
    rad1->resize(100, 32);

    QCheckBox *rad2 = new QCheckBox(this);
    rad2->move(lin2->x()+280,lin2->y());
    rad2->setText("记住密码");
    rad2->resize(100, 32);



    connect(but1,&QPushButton::clicked,[=](){

        if(lin1->text()=="admin" && lin2->text()=="123456")
        {
            QMessageBox succbox(QMessageBox::NoIcon,"登录","登录成功",QMessageBox::Ok,but1);
            int err = succbox.exec();
            if(err == QMessageBox::Ok)
            {
                emit jump();
                this->close();
               // emit jump();
            }
        }
        else
        {
            int err = QMessageBox::critical(
                        this,tr("错误"),
                        tr("账号密码不匹配,是否重新登录"),
                        QMessageBox::Yes | QMessageBox::Cancel,
                        QMessageBox::Cancel
                        );

            if(err == QMessageBox::Cancel)
            {
                int ques = QMessageBox::question(
                            this,
                            tr("问题"),
                            tr("是否退出"),
                            QMessageBox::Yes | QMessageBox::No,
                            QMessageBox::No
                            );
                if(ques == QMessageBox::Yes)
                {
                    this->close();
                }
            }
            this->lin1->clear();
            this->lin2->clear();
        }
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

widget.h

cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QIcon>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QCheckBox>
#include <QMessageBox>
#include <QDebug>
#include "com.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

    QPushButton* but1;
    QPushButton* but2;
    QLineEdit *lin1;
    QLineEdit *lin2;

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    com* c;

signals:
    void jump();
};
#endif // MAINWINDOW_H

com.cpp

cpp 复制代码
#include "com.h"
#include "ui_com.h"

void com::jump_slot()
{
    this->show();
}

com::com(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::com)
{
    ui->setupUi(this);

}

com::~com()
{
    delete ui;
}

com.h

cpp 复制代码
#ifndef COM_H
#define COM_H

#include <QWidget>

namespace Ui {
class com;
}

class com : public QWidget
{
    Q_OBJECT

public slots:
    void jump_slot();


public:
    explicit com(QWidget *parent = nullptr);
    ~com();

private:
    Ui::com *ui;
};

#endif // COM_H
相关推荐
ZhengEnCi3 小时前
08c. 检索算法与策略-混合检索
后端·python·算法
程序员小崔日记4 小时前
大三备战考研 + 找实习:我整理了 20 道必会的时间复杂度题(建议收藏)
算法·408·计算机考研
lizhongxuan4 小时前
AI小镇 - 涌现
算法·架构
AI工程架构师7 小时前
通常说算力是多少 FLOPS,怎么理解,GPU和CPU为什么差异这么大
算法
祈安_8 小时前
Java实现循环队列、栈实现队列、队列实现栈
java·数据结构·算法
归去_来兮21 小时前
拉格朗日插值算法原理及简单示例
算法·数据分析·拉格朗日插值
千寻girling1 天前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
颜酱1 天前
一步步实现字符串计算器:从「转整数」到「带括号与优化」
javascript·后端·算法
Felix_One2 天前
Qt 串口通信避坑指南:QSerialPort 的 5 个常见问题
qt
CoovallyAIHub2 天前
语音AI Agent编排框架!Pipecat斩获10K+ Star,60+集成开箱即用,亚秒级对话延迟接近真人反应速度!
深度学习·算法·计算机视觉