qt完善登录界面(2023-4-6)

点击登录按钮后,判断账号和密码是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。

如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面

点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录

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

form.h

#ifndef FORM_H
#define FORM_H

#include <QWidget>

namespace Ui {
class Form;
}

class Form : public QWidget
{
    Q_OBJECT

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

public slots:
    void mySlot(QString e);              //自定义的槽函数

private:
    Ui::Form *ui;
};

#endif // FORM_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QIcon>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QDebug>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT
signals:
    //声明信号函数权限
    void mySignal(QString e);  //自定义一个无参无返回值信号函数
public slots:
    //槽函数声明的权限
      //自定义一个无参无返回值槽函数
    void on_clicked_btn1();
    void on_clicked_btn2();

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

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

form.cpp

#include "form.h"
#include "ui_form.h"

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

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

void Form::mySlot(QString e)
{
    this->show();           //将自身界面展示出来
}

main.cpp

#include "widget.h"
#include "form.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Form f;
    //将w界面的自定义信号函数,与f界面的槽函数进行连接
    QObject::connect(&w, &Widget::mySignal, &f, &Form::mySlot);

    return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
QLineEdit *edt2;
QLineEdit *edt1;
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置窗口标题
     this->setWindowTitle("my_homework");
    //设置窗口图标
    this->setWindowIcon(QIcon(":/icon/che.JPG"));

    //固定窗口尺寸
    this->setFixedSize(530,330);

    //设置logo
    QLabel *lab=new QLabel(this);
    lab->resize(530,330);
    lab->setPixmap(QPixmap(":/icon/logo.png"));
    lab->setScaledContents(true);

    //设置登录账号
    QLabel *lab1=new QLabel(this);
    lab1->move(365,255);
    lab1->resize(20,20);
    lab1->setPixmap(QPixmap(":/icon/userName.jpg"));
    lab1->setScaledContents(true);

    edt1= new QLineEdit(this);
    edt1->move(390,250);
    edt1->resize(135,25);

    //设置登录密码
    QLabel *lab2=new QLabel(this);
    lab2->move(365,280);
    lab2->resize(20,20);
    lab2->setPixmap(QPixmap(":/icon/passwd.jpg"));
    lab2->setScaledContents(true);

    edt2= new QLineEdit(this);
    edt2->move(390,280);
    edt2->resize(135,25);
    edt2->setEchoMode(QLineEdit::Password); //设置回显模式

    //登录按钮
    QPushButton *btn1=new QPushButton("登录",this);
    btn1->move(415,305);
    btn1->resize(40,25);
    //取消按钮
    QPushButton *btn2=new QPushButton("退出",this);
    btn2->move(465,305);
    btn2->resize(40,25);
    //将按钮btn1发射的信号,手动连接到界面本身的自定义槽函数中
    connect(btn1,&QPushButton::clicked,this,&Widget::on_clicked_btn1);

    //将btn2发射的信号,手动连接到界面本身的自定义槽函数中
    connect(btn2,&QPushButton::clicked,this,&Widget::on_clicked_btn2);

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

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

void Widget::on_clicked_btn1()
{
    QString username=edt1->text();
    QString pwd=edt2->text();
    if(username=="admin"&&pwd=="123456")
            {
                QMessageBox::information(this,"信息","登录成功",
                                         QMessageBox::Ok);
                qDebug()<<"登录成功";
                //关闭自身界面
                this->close();
                //跳转到其他界面
                emit mySignal("hello world");
            }
            else
            {
                int ret = QMessageBox::critical(this,"error","账号密码不匹配,是否重新登录?",
                                                QMessageBox::Ok|QMessageBox::Cancel);
                qDebug()<<"账号密码不匹配";
                if(ret == QMessageBox::Ok)
                {
                    edt2->clear();
                }else if(ret == QMessageBox::Cancel)
                {
                    this->close();
                }
            }
}
void Widget::on_clicked_btn2()
{
    int ret = QMessageBox::question(this,"question","是否确定退出?",
                                       QMessageBox::Yes|QMessageBox::No);
    if(ret == QMessageBox::Yes)
    {
        this->close();
    }else if(ret == QMessageBox::No)
    {
        return;
    }
}

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值