QT基础练习(2023-4-6)----通过QT搭建一个登陆平台

该代码段展示了使用Qt创建登录界面的过程,包括设置界面元素如标签、输入框、按钮等,以及处理登录按钮和取消按钮的点击事件。登录验证涉及账号和密码的匹配,错误提示和成功提示的显示。同时,实现了信号和槽机制来响应用户操作。
摘要由CSDN通过智能技术生成

作业
完善登录界面
        1.点击登录按钮后,判断账号和密码是否致

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

第一步:登陆界面的搭建

 //修改边框大小以及图标,名称
    this->setFixedSize(644,492);
    this->setWindowTitle(QString("APEX LEGEND -- YOU ARE THE CHAMPION"));
    this->setWindowIcon(QIcon(":/3.png"));

    //标签位置
     QLabel *lab1 = new QLabel;
     lab1->setParent(this);
     lab1->resize(644,286);
     lab1->setPixmap(QPixmap(":/2.png"));
     lab1->setScaledContents(true);

     //标签位置
      QLabel *lab2 = new QLabel;
      lab2->setParent(this);
      lab2->move(0,286);
      lab2->resize(644,206);
      lab2->setPixmap(QPixmap(":/apex.png"));
      lab2->setScaledContents(true);

      //标签位置
       QLabel *lab3= new QLabel("apex账号:",this);
       QFont ft("Microsoft YaHei",15,75);
       lab3->setFont(ft);
       lab3->move(120,320);
       lab3->setScaledContents(true);

       //标签位置
        QLabel *lab4= new QLabel("apex密码:",this);
        QFont ft1("Microsoft YaHei",15,75);
        lab4->setFont(ft1);
        lab4->move(120,360);
        lab4->setScaledContents(true);

        //编辑
        edt1 = new QLineEdit;
        edt1->setParent(this);
        //edt1->move(300,355);
        //edt1->resize(200,30);
        edt1->setGeometry(280,323,200,35);

        //编辑
        edt2 = new QLineEdit;
        edt2->setParent(this);
        edt2->setGeometry(280,363,200,35);
        edt2->setEchoMode(QLineEdit::Password);

        //apex登录
        btn1 = new QPushButton(this);
        btn1->resize(90,45);
        btn1->setText("登录");
        btn1->move(280,430);
        btn1->setStyleSheet("background-color:dark");
        btn1->setIcon(QIcon(":/liesha.png"));

        //apex登录
        btn2 = new QPushButton;
        btn2->setParent(this);
        btn2->resize(90,45);
        btn2->setText("取消");
        btn2->move(390,430);
        btn2->setStyleSheet("background-color:dark");
        btn2->setIcon(QIcon(":/dashi.png"));

        QCheckBox *box = new QCheckBox;
        box->setParent(this);
        box->resize(100,45);
        box->setText("自动登录");
        box->move(280,395);

        QCheckBox *box1 = new QCheckBox;
        box1->setParent(this);
        box1->resize(100,45);
        box1->setText("记住密码");
        box1->move(400,395);

        connect(btn1,&QPushButton::clicked,this,&Widget::on_clicked_slot);
        connect(btn2,&QPushButton::clicked,this,&Widget::on_clicked_slot2);

        //将自定义的信号与槽函数连接
        connect(this,&Widget::mysignal,[](QString e){
            qDebug()<<e;
        });

 第二步:账号与密码匹配

void Widget::on_clicked_slot()
{
    char text[32]="admin";
    char password[32]="123456";

    if(edt1->text()==text)
    {
        if(edt2->text() == password)
        {
           qDebug()<<"登陆成功";
            emit mysignal("登陆成功");

        }
        else
        {
            qDebug()<<"登陆失败";
            emit mysignal("密码错误");
            edt2->clear();
        }
    }

}
void Widget::mySlot(QString e)
{
    emit mysignal("取消登录");
}
void Widget::on_clicked_slot2()
{
    QApplication::exit();
}

void ApexGame::mySlot(QString e)
{
    this->show();
}
void ApexForm::mySlot(QString e)
{
    if(e == "登陆成功")
    {
         QMessageBox box(QMessageBox::Information,
                         "信息",
                         "登陆成功",
                          QMessageBox::Ok| QMessageBox::No,
                         this);
         //调用exec进入 运行态
         int ret = box.exec();
         //功能:使对话框进入运行态
         //参数:无
         //返回值:整型,对话框中用户点击的按钮值

         //对用户点击的结果进行判断
         if(ret == QMessageBox::Ok)
         {
             emit mysignal1("游戏开始!");
             this->close();
         }else if(ret == QMessageBox::No)
         {
              this->close();
         }
    }else if(e == "密码错误")
    {
        int ret = QMessageBox::warning(this,"警告","密码错误!!是否重新登陆?",
                              QMessageBox::Ok| QMessageBox::Cancel);

         //对用户点击的结果进行判断
         if(ret == QMessageBox::Ok)
         {
              this->close();
         }else if(ret == QMessageBox::Cancel)
         {
              QApplication::exit();
         }
    }
    else if(e == "退出登录")
    {
        int ret = QMessageBox::question(this,"问题","你确定要退出登录吗?",
                              QMessageBox::Yes| QMessageBox::No);

         //对用户点击的结果进行判断
         if(ret == QMessageBox::Yes)
         {
              QApplication::exit();
         }else if(ret == QMessageBox::No)
         {
             this->close();
         }
    }
}
    ApexForm f;
    ApexGame g;
    //将W界面的自定义信号函数,与f界面的槽函数进行连接
    QObject::connect(&w,&Widget::mysignal,&f,&ApexForm::mySlot);
    QObject::connect(&f,&ApexForm::mysignal1,&w,&Widget::mySlot);
    QObject::connect(&f,&ApexForm::mysignal1,&g,&ApexGame::mySlot);

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值