2023年9月18日

完善登录框

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

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

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

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

mainwindow.h

cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMovie>
#include <QDebug>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui {class MainWindow;}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
public slots:
    //void on_btn1_clicked();

    void my_slot1();

private:
    Ui::MainWindow *ui;
    QLineEdit *edti1;
    QLineEdit *edti2;
    QPushButton *btn1;
    QPushButton *btn2;
    QLabel *lab1;
    QLabel *lab2;
    QLabel *lab3;

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

second.h

cpp 复制代码
#ifndef SECOND_H
#define SECOND_H

#include <QWidget>

namespace Ui {
class second;
}

class second : public QWidget
{
    Q_OBJECT

public slots:
    void jump_slot();

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

private:
    Ui::second *ui;
};

#endif // SECOND_H

main.cpp

cpp 复制代码
#include "mainwindow.h"
#include "second.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;    
    w.show();

    second s;
    QObject::connect(&w,&MainWindow::jump,&s,&second::jump_slot);

    return a.exec();
}

mainwindow.cpp

cpp 复制代码
#include "mainwindow.h"
#include <QDebug>
#include <iostream>
#include <QIcon>
#include <QMovie>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //界面
    this->setFixedSize(800,600);  //设置固定尺寸
    this->setWindowTitle("摇篮游行");  //设置窗口标签
    this->setWindowIcon(QIcon(":/pict/123.webp")); //设置窗口图标

    //按钮
    btn1 = new QPushButton(QIcon(":/pict/213.jpg"),"登录",this);  //构造一个按钮
    btn1->resize(100,50);  //设置按钮大小
    btn1->move(550,420);   //移动按钮


    btn2 = new QPushButton(QIcon(":/pict/12345.jpg"),"退出",this); //构造一个按钮
    btn2->resize(btn1->size());
    btn2->move(550,520);

    //行编辑器
    edti1 = new QLineEdit(this);  //构造一个行编辑器
    edti1->setPlaceholderText("繁星凝望着海洋");
    edti1->resize(300,50);
    edti1->move(180,420);

    edti2 = new QLineEdit(this);  //构造一个行编辑器
    edti2->setPlaceholderText("海洋拥抱着风帆");
    edti2->resize(300,50);
    edti2->move(180,520);

    //按钮1事件
    connect(btn1,SIGNAL(clicked()),this,SLOT(my_slot1()));

    //标签
    lab1 = new QLabel(this);
    lab1->resize(80,50);
    lab1->setPixmap(QPixmap(":/pict/321.webp"));
    lab1->setScaledContents(true);
    lab1->move(100,420);

    lab2 = new QLabel(this);
    lab2->resize(80,50);
    lab2->setPixmap(QPixmap(":/pict/4321.webp"));
    lab2->setScaledContents(true);
    lab2->move(100,520);

    //gif
    QMovie *movie = new QMovie(":/pict/6.gif");
    lab3 = new QLabel(this);
    lab3->resize(800,400);
    lab3->setMovie(movie);
    movie->start();
    lab3->setScaledContents(true);
    lab3->move(0,0);

}

void MainWindow::my_slot1()
{
    QMessageBox msgbox;
    if(edti1->text()=="admin"&&edti2->text()=="123456")
    {
        QMessageBox msgbox(QMessageBox::Information,
                           "摇篮夜行",
                           "登录成功",
                           QMessageBox::Ok,
                           this);

        emit jump();
        this->close();
    }else
    {
        int ret = QMessageBox::critical(
                    this,tr("摇篮夜行"),
                    tr("账号或密码不正确,是否重新登录"),
                    QMessageBox::Yes | QMessageBox::Cancel,
                    QMessageBox::Cancel
                    );
        if(ret == QMessageBox::Cancel)
        {
            int ret2 = QMessageBox::question(
                        this,
                        tr("摇篮夜行"),
                        tr("是否退出"),
                        QMessageBox::Yes | QMessageBox::No,
                        QMessageBox::No
                        );

            if(ret2 == QMessageBox::Yes)
            {
                this->close();
            }
        }
        this->edti1->clear();
        this->edti2->clear();
    }
}

MainWindow::~MainWindow()
{

}

second.cpp

cpp 复制代码
#include "second.h"
#include "ui_second.h"

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

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

void second::jump_slot()
{
    this->show();
}
相关推荐
A7bert77729 分钟前
【YOLOv8pose部署至RDK X5】模型训练→转换bin→Sunrise 5部署
c++·python·深度学习·yolo·目标检测
li1670902701 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【贪心与二分判定】:数列分段 Section II
c++·算法·贪心·csp·信奥赛·二分判定·数列分段 section ii
zh_xuan2 小时前
libcurl调用https接口
c++·libcurl
就叫飞六吧2 小时前
QT写一个桌面程序exe并动态打包基本流程(c++)
开发语言·c++
蜡笔小马2 小时前
1.c++设计模式-工厂模式
c++
汉克老师2 小时前
GESP2025年3月认证C++五级( 第三部分编程题(2、原根判断))
c++·算法·模运算·gesp5级·gesp五级·原根·分解质因数
winner88812 小时前
从零吃透C++命名空间、std、#include、string、vector
java·开发语言·c++
AI进化营-智能译站3 小时前
ROS2 C++开发系列07-高效构建机器人决策逻辑,运算符与控制流实战
开发语言·c++·ai·机器人
winner88813 小时前
C++ 命名空间、虚函数、抽象类、protected 权限全套通俗易懂精讲(附与 Java 对比)
java·开发语言·c++