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();
}
相关推荐
knighthood200111 分钟前
解决:ros进行gazebo仿真,rviz没有显示传感器数据
c++·ubuntu·ros
半盏茶香39 分钟前
【C语言】分支和循环详解(下)猜数字游戏
c语言·开发语言·c++·算法·游戏
小堇不是码农1 小时前
在VScode中配置C_C++环境
c语言·c++·vscode
Jack黄从零学c++1 小时前
C++ 的异常处理详解
c++·经验分享
捕鲸叉6 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer6 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq6 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
青花瓷8 小时前
C++__XCode工程中Debug版本库向Release版本库的切换
c++·xcode
幺零九零零9 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
捕鲸叉9 小时前
MVC(Model-View-Controller)模式概述
开发语言·c++·设计模式