10.8每日作业

 

当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录

当用户点击的登录按钮,进行账号和密码的匹配,如果匹配成功,则弹出信息对话框,给出信息为,登录成功,并给出一个确定按钮,当用户点击该按钮后,关闭登录界面,弹出另一个界面

当账号和密码不匹配是,给出错误对话框,给出信息为账号和密码不匹配,是否重新登录,并提供两个按钮 Yes|No,如果用户点击了Yes,则清空密码框后,继续登录。如果用户点击的取消,则关闭登录界面

要求:静态成员函数版本和对象版本各至少实现一个

main.c

#include "widget.h"
#include"second.h"             //第二个界面的头文件


#include <QApplication>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;                       //实例化的第一个界面
    w.show();

    Second s;                        //实例化第二个界面

    //将第一个界面的跳转信号与第二个界面的槽函数进行连接
    //s.connect(&w, &Widget::jump, &s, &Second::jump_slot);
    //w.connect(&w, &Widget::jump, &s, &Second::jump_slot);
    QObject::connect(&w, &Widget::jump, &s, &Second::jump_slot);

    return a.exec();
}

widget.cpp 

#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>            //消息对话框类
#include<QDebug>

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

    this->resize(900,800);                        //重置界面尺寸

    this->setWindowTitle("登录");                 //设置界面名称为:登录
    this->setWindowIcon(QIcon("C:\\Users\\86183\\Desktop\\icon_dj40cz9xze4\\pictrue\\qq.png"));
    //设置界面图标

    //QLabel *
    lab1 = new QLabel(this);              //定义文本
    lab1->resize(300,200);                        //设置文本框大小
    lab1->move(300,200);                          //移动文本位置
    lab1->setPixmap(QPixmap("C:\\Users\\86183\\Desktop\\icon_dj40cz9xze4\\qq.png"));
    //设置文本为图片
    lab1->setScaledContents(true);                //设置图片自动缩放

    //QLabel *
    lab2 = new QLabel("账号:",this);      //定义文本
    lab2->resize(50,40);                          //重置文本框大小
    lab2->move(lab1->x(),lab1->y()+lab1->height()+10);  //移动文本位置

    //QLabel *
    lab3 = new QLabel("密码:",this);       //定义文本
    lab3->resize(50,40);                          //重置文本框大小
    lab3->move(lab2->x(),lab2->y()+lab2->height());    //移动文本位置

    //QLineEdit *
    edit1 = new QLineEdit(this);
    edit1->resize(250,30);                      //重置尺寸
    edit1->move(lab2->x()+lab2->width(),lab2->y());
    edit1->setStyleSheet("color:black");        //设置字体颜色
    edit1->setAlignment(Qt::AlignCenter);       //设置文本对齐方式:居中
    edit1->setPlaceholderText("输入QQ账号");     //设置占位文本

    //QLineEdit *
    edit2 = new QLineEdit(this);
    edit2->resize(250,30);                      //重置尺寸
    edit2->move(lab3->x()+lab3->width(),lab3->y());
    edit2->setStyleSheet("color:black");         //设置字体颜色
    edit2->setAlignment(Qt::AlignCenter);       //设置文本对齐方式:居中
    edit2->setEchoMode(QLineEdit::Password);    //设置密文模式
    edit2->setPlaceholderText("输入QQ密码");     //设置占位文本

    //QPushButton *
    btn1 = new QPushButton("登录",this);     //定义按键
    btn1->resize(110,40);                                //重置按键大小
    btn1->move(lab3->x(),lab3->y()+lab3->height());      //移动按键位置

    //QPushButton *
    btn2 = new QPushButton("取消",this);     //定义按键
    btn2->resize(110,40);                                //重置按键大小
    btn2->move(btn1->x()+btn1->width()+80,btn1->y());      //移动按键位置

    /*
当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录
当用户点击的登录按钮,进行账号和密码的匹配,如果匹配成功,则弹出信息对话框,给出信息为,登录成功,并给出一个确定按钮,当用户点击该按钮后,关闭登录界面,弹出另一个界面
当账号和密码不匹配是,给出错误对话框,给出信息为账号和密码不匹配,是否重新登录,并提供两个按钮 Yes|No,如果用户点击了Yes,则清空密码框后,继续登录。如果用户点击的取消,则关闭登录界面
     */


    connect(btn1, &QPushButton::clicked, this, &Widget::my_signal_1_slot);
    connect(btn2, &QPushButton::clicked, this, &Widget::my_signal_2_slot);

}


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


void Widget::my_signal_1_slot()
{
    if(edit1->text() == "sc"&& edit2->text() == "123" )
    {
        QMessageBox box(QMessageBox::Question,
                        "结果",
                        "登录成功",
                        QMessageBox::Yes,
                        this);

        box.setButtonText(QMessageBox::Yes, "确定");
        box.setDefaultButton(QMessageBox::No);

        int btn = box.exec();

        if(btn == QMessageBox::Yes)
        {
            this->close();

            emit jump();
        }
    }
    else
    {
        QMessageBox box(QMessageBox::Question,
                        "结果",
                        "账号与密码不匹配,是否重新登录",
                        QMessageBox::Yes|QMessageBox::No,
                        this);

        int btn = box.exec();

        if(btn == QMessageBox::Yes)
        {
            edit2->clear();
        }
        else if(btn == QMessageBox::No)
        {
            this->close();
        }
    }


}

void Widget::my_signal_2_slot()
{
        int btn = QMessageBox::warning(this,
                             "警告",
                             "是否要确定退出登录",
                             QMessageBox::Yes|QMessageBox::No,
                             QMessageBox::No);



        if(btn == QMessageBox::Yes)
        {
            this->close();
        }
        else if(btn==QMessageBox::No)
        {

        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值