9月18日作业

文章描述了一个名为mywnd的C++类,它在mywnd.cpp中定义,用于创建一个带有登录和取消功能的窗口,通过信号槽机制处理登录验证和退出操作。
摘要由CSDN通过智能技术生成

思维导图

作业:mywnd.cpp

#include "mywnd.h"

mywnd::mywnd(QWidget *parent)
    : QWidget(parent)        //显性调用父类的有参构造完成对子类从父类继承下来成员的初始化工作
{
    //窗口设置
    this->resize(QSize(500, 433));
    this->setWindowTitle("Widget");
    this->setWindowIcon(QIcon(":/icon/wodepeizhenshi.png"));
    QLabel *lab1 = new QLabel(this);
    //图片1
    lab1->resize(QSize(500, 200));
    lab1->setPixmap(QPixmap(":/icon/logo.png"));
    lab1->move(QPoint(0, 0));
    lab1->setScaledContents(true);
    //图片2
    QLabel *lab2 = new QLabel(this);
    lab2->resize(QSize(50, 50));
    lab2->setPixmap(QPixmap(":/icon/userName.jpg"));
    lab2->move(QPoint(60, 230));
    lab2->setScaledContents(true);
    //图片3
    QLabel *lab3 = new QLabel(this);
    lab3->resize(QSize(50, 50));
    lab3->setPixmap(QPixmap(":/icon/passwd.jpg"));
    lab3->move(QPoint(60, 310));
    lab3->setScaledContents(true);
    //账号行编辑器
    lin1 = new QLineEdit(this);
    lin1->resize(250, 50);
    lin1->move(QPoint(150, 230));
    //密码行编辑器
    lin2 = new QLineEdit(this);
    lin2->resize(250, 50);
    lin2->move(QPoint(150, 310));
    lin2->setEchoMode(QLineEdit::Password);
    //登录按钮
    btn1 = new QPushButton(QIcon(":/icon/login.png") ,"登录", this);
    btn1->resize(80, 50);
    btn1->move(QPoint(130, 370));
    //取消按钮
    btn2 = new QPushButton(QIcon(":/icon/cancel.png") ,"取消", this);
    btn2->resize(80, 50);
    btn2->move(QPoint(290, 370));
    l1 = new login;
    connect(btn1, &QPushButton::clicked, this, &mywnd::Login);
    connect(this, &mywnd::jumpToLogin, l1, &login::jumpToLogin_slot);
    connect(btn2, &QPushButton::clicked, this, &mywnd::cancel);
}

void mywnd::Login()
{
    if(lin1->text()==QString("admin")&&lin2->text()==QString("123456")){
        QMessageBox box(QMessageBox::Information, "登录",
                        "登陆成功", QMessageBox::Ok, this);
        box.exec();
        emit this->jumpToLogin();
        this->close();
    }else{
        QMessageBox box(QMessageBox::Critical,
                        "错误", "账号密码不匹配,是否重新登录",
                        QMessageBox::Yes|QMessageBox::No, this);
        box.setDefaultButton(QMessageBox::Yes);
        int ret = box.exec();
        if(QMessageBox::Yes==ret){
            lin2->clear();
        }else{
            this->close();
        }
    }
}

void mywnd::cancel()
{
    //使用静态成员函数的方式打开一个对话框
    int ret = QMessageBox::question(this,
                                    "请问",
                                    "是否确认要退出",
                                    QMessageBox::Yes|QMessageBox::No,
                                    QMessageBox::No);

    switch (ret) {
        case QMessageBox::Yes:
            this->close();
            break;
        case QMessageBox::No:
            break;
    }
}

mywnd::~mywnd()
{
}




mywnd.h

#ifndef MYWND_H
#define MYWND_H  //防止文件重复包含

#include <QWidget> //父类的头文件
#include <QDebug>  //信息调试头文件
#include <QPushButton> //按钮类头文件
#include <QLineEdit>   //行编辑器类头文件
#include <QLabel>      //标签类头文件
#include <QMessageBox>
#include"login.h"

//自定义自己的界面,公告继承自QWidget,父类中重写了绘制事件处理函数
class mywnd : public QWidget
{
    Q_OBJECT   //信号与槽的对象,没有这个对象,信号与槽就不能使用了

signals:
    void jumpToLogin();

public slots:
    void Login();  //登录函数
    void cancel(); //退出函数

public:
    mywnd(QWidget *parent = nullptr);  //构造函数的声明,并且有一个带默认参数的形参
    ~mywnd();                           //析构函数的声明

    QLineEdit *lin1;
    QLineEdit *lin2;
    QPushButton *btn1;
    QPushButton *btn2;
    login *l1;
};
#endif // MYWND_H

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值