【无标题】

2023/4/6  qt弹窗的制作与设置

 完善登录界面
点击登录按钮后,判断账号和密码是否一致,如果匹配失败,则弹出错误对
话框,文本内容账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击o!后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。
如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功".给出
一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面
点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按
钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录
要求:对象版和静态成员函数版至少各实现一个

#include "work.h"
#include "ui_work.h"

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

    //更改尺寸的面积
    this->setFixedSize(540,410);

    //设置窗口图标以及标签
    this->setWindowIcon(QIcon("D:\\QT\\qtC++\\qt_day1\\02_qdebug\\chick.png"));
    this->setWindowTitle("真爱家族");

    //在中间放置一个log图
    QLabel *label=new QLabel(this);
    label->setPixmap(QPixmap("D:\\QT\\qtC++\\qt_day1\\05_work\\chick_1.png"));
    label->resize(540,205);
    label->setScaledContents(true);
/*
    //在正中心设置一个圆形的logo图形
    QLabel *label_R=new QLabel(this);
    label_R->setPixmap(QPixmap(":/dingzhen.png"));
    label_R->resize(100,100);
    int radius=25;
    int radius_x=(label->width()-radius*2)/2;
    int radius_y=(label->height()-radius*2)/2;
    label_R->setStyleSheet("border-radius:25px");
    label_R->setScaledContents(true);
 //   label_R->move(radius_x,radius_y+100);
    label_R->move(440,310);
*/
    //用户名和密码使用图片完成
    QLabel *label_name=new QLabel(this);
    label_name->setPixmap(QPixmap("D:\\QT\\qtC++\\qt_day1\\05_work\\name.png"));
    label_name->resize(50,50);
    label_name->move(150,240);
    label_name->setScaledContents(true);
    //密码
    QLabel *label_pass=new QLabel(this);
    label_pass->setPixmap(QPixmap("D:\\QT\\qtC++\\qt_day1\\05_work\\pass.png"));
    label_pass->resize(50,50);
    label_pass->move(150,290);
    label_pass->setScaledContents(true);

    //输入一个账户

    line_name=new QLineEdit(this);
    line_name->resize(150,35);
    line_name->setStyleSheet("background-color:pink");
    line_name->move(200,240);
    line_name->setStyleSheet("border: none; border-bottom: 1px solid black;");
    //输入密码

    line_pass=new QLineEdit(this);
    line_pass->resize(150,35);
    line_pass->setStyleSheet("background-color:pink");
    line_pass->move(200,305);
    line_pass->setEchoMode(QLineEdit::Password);
    line_pass->setStyleSheet("border: none; border-bottom: 1px solid black;");
    //设置登陆以及取消按钮
    btn=new QPushButton("登陆",this);
    btn->move(180,350);
    btn->resize(40,40);

    btn_1=new QPushButton("取消",this);
    btn_1->move(280,350);
    btn_1->resize(40,40);

    //账户密码比较
    connect(btn,&QPushButton::clicked,this,&work::name_pass);
    connect(btn_1,&QPushButton::clicked,this,&work::quit);

    //将自定义函数
    connect(this,&work::mysignals,[](QString e){        qDebug()<line_name->text()==s1)
    {
        s1="123456";
        if(this->line_pass->text()==s1)
        {
        //弹窗静态成员版
        QMessageBox::information(this,"状态","登陆成功",QMessageBox::Ok);
        //进入聊天室
        QString e("验证成功");
      //  connect(this,&work::mysignals,[](QString e){});
        emit mysignals(e);
        }
        else//密码错误,提示是否重新输入
        {
            //弹窗静态成员版
            int ret=QMessageBox::warning(this,"警告","密码错误,是否重新输入",QMessageBox::Yes,QMessageBox::No);
            if(ret==QMessageBox::Yes)
            {
                this->line_pass->clear();
            }
            else if(ret==QMessageBox::No)
            {
                this->close(); //关闭当前窗口
            }
            else
                return;
        }
    }
    else//账户错误
    {
        //弹窗成员函数版
        QMessageBox s1(QMessageBox::Critical,"账户","账户错误,重新输入or注册or退出",QMessageBox::Yes|QMessageBox::Help|QMessageBox::No);
        int ret=s1.exec();
        switch(ret)
        {
        //继续登陆,清空账号密码框
        case QMessageBox::Yes:
        {
        this->line_name->clear();//清空账号框
        this->line_pass->clear();//清空密码框
            break;
        }
        case QMessageBox::Help:
        {
            //转到账号注册界面
            break;
        }
        case QMessageBox::No:
        {
            this->close();//关闭整个登陆界面
        }
        }
    }
}

void work::quit()
{
    QMessageBox box(QMessageBox::Warning,"退出","是否确实退出",QMessageBox::Yes|QMessageBox::No);
    int ret=box.exec();
    if(ret==QMessageBox::Yes)
    {
        this->close();
    }
    else if(ret==QMessageBox::No)
    {

    }

}


 

你可能感兴趣的:(QT,qt,ui,开发语言)