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
相关推荐
Kina_C8 分钟前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
hansang_IR1 小时前
【题解】[AGC020E] Encoding Subsets
c++·算法·dp
茯苓gao1 小时前
嵌入式开发笔记:QSerialPort 完整使用指南——从基础 API 到工程实战
笔记·嵌入式硬件·qt·学习
核数聚2 小时前
【赛迪专访核数聚】深耕数据治理,打通数据孤岛夯实 AI 发展根基
大数据·人工智能·算法
小许同学记录成长2 小时前
相对辐射定标技术文档
图像处理·算法
白白白小纯2 小时前
算法篇—返回倒数第k个节点
c语言·数据结构·算法·leetcode
小羊先生car2 小时前
RTOS-F429-HAL-(动/静态)任务的创建(2026/7/27)
开发语言·算法·c#
无忧.芙桃3 小时前
数据结构之堆
c语言·数据结构·c++·算法·
Sagittarius_A*3 小时前
[LitCTF2026] lit_xor_two_story
python·算法·密码学
小蒋学算法3 小时前
算法-删除元素后最大固定点数目-典型最长增长序列算法
数据结构·算法