Day3Qt

发布时间:2024年01月10日

1.

(1)完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面

(2)如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面

(3)如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

要求:基于属性版和基于静态成员函数版至少各用一个

头文件logs.h

#ifndef LOGS_H
#define LOGS_H

#include <QWidget>
#include <QMovie>
namespace Ui {
class LOGS;
}

class LOGS : public QWidget
{
    Q_OBJECT

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

private:
    Ui::LOGS *ui;
public slots:
    void Logsuccess();//自定义槽函数
};

#endif // LOGS_H

头文件Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QObject>
#include <QMessageBox>//消息对话框类
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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

private:
    Ui::Widget *ui;
public slots:
    void on_login_slots();
    void on_cancel_slots();
signals:
    void my_jump();
};

#endif // WIDGET_H

源文件logs.cpp

#include "logs.h"
#include "ui_logs.h"

LOGS::LOGS(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::LOGS)
{
    ui->setupUi(this);
    QMovie *mv = new QMovie(":/pictrue/01.gif");
    ui->label->setMovie(mv);
    mv->start();
}

LOGS::~LOGS()
{
    delete ui;
}
//自定义槽函数的处理
void LOGS::Logsuccess()
{
    this->show();//显示自己的界面
}

源文件widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);//去除头部
    this->setAttribute(Qt::WA_TranslucentBackground);//QT中窗口部件背景透明化
    this->setWindowIcon(QIcon(":/pictrue/1.jpg"));//设置图标
    connect(ui->cancelpus,SIGNAL(clicked()),this,SLOT(on_cancel_slots()));//qt4 不友好
    connect(ui->Loginpus,&QPushButton::clicked,this,&Widget::on_login_slots);//qt5
}

Widget::~Widget()
{
    delete ui;
}
//登录键按下槽函数的处理
void Widget::on_login_slots()
{
    if((ui->loglineEdit->text()=="Mikasa")&(ui->pwdlineEdit->text()=="123456"))//对输入的UID与密码进行判断
    {
        this->close();//关闭当前
        emit this->my_jump();//用关键字 emit 手动触发信号
    }else {
        //基于属性版本
        QMessageBox logerror(QMessageBox::Critical,
                             "登录失败",//标题
                             "账号和密码不匹配,是否重新登录",//提示文本
                             QMessageBox::Yes | QMessageBox::No,//提供的按钮
                             this);
        int res = logerror.exec();
        if(res == QMessageBox::Yes)//判断用户按下的键
        {
            ui->pwdlineEdit->clear();//清空密码栏
        }else if (res == QMessageBox::No)
        {
            this->close();//关闭程序
        }
    }
}
//取消键按下槽函数的处理
void Widget::on_cancel_slots()
{
    //静态成员函数
    int res = QMessageBox::question(this,
                                    "退出",
                                    "是否确定退出登录",
                                    QMessageBox::Yes|QMessageBox::No);
    if(res == QMessageBox::Yes)//判断按下的键
    {
        this->close();
    }else if(res == QMessageBox::No)
    {

    }
}

main.cpp

#include "widget.h"
#include <QApplication>
#include "logs.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    LOGS L;//实例化第二个界面
    QObject::connect(&w,&Widget::my_jump,&L,&LOGS::Logsuccess);//将两个界面进行连接
    return a.exec();
}

效果图

登录成功跳转界面:

思维导图

文章来源:https://blog.csdn.net/Aklkimg/article/details/135511902
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。