Qt / day03

1.  思维导图

Qt / day03_第1张图片

2. 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面

如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面

如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户点击Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

要求:基于属性版和基于静态成员函数版至少各用一个

Qt / day03_第2张图片

代码:

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include 
#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MyWidget; }
QT_END_NAMESPACE

class MyWidget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_btnClose_clicked();

    void on_btn_clicked();

    void on_btnLogin_clicked();

    void on_btnCancel_clicked();

private:
    Ui::MyWidget *ui;

signals:
    void sig_login();
};
#endif // MYWIDGET_H

widgetb.h

#ifndef WIDGETB_H
#define WIDGETB_H

#include 

namespace Ui {
class WidgetB;
}

class WidgetB : public QWidget
{
    Q_OBJECT

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

private:
    Ui::WidgetB *ui;

public slots:
    void slot_login();
};

#endif // WIDGETB_H

main.cpp

#include "mywidget.h"
#include "widgetb.h"

#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWidget w;
    WidgetB wb;
    QObject::connect(&w, &MyWidget::sig_login, &wb, &WidgetB::slot_login);
    w.show();
    return a.exec();
}

mywidget.cpp

#include "mywidget.h"
#include "ui_mywidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MyWidget)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground);

}

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


void MyWidget::on_btnClose_clicked()
{

}

void MyWidget::on_btn_clicked()
{

}

void MyWidget::on_btnLogin_clicked()
{
    if(ui->lineEditUserName->text() == "admin" && ui->lineEditPassword->text() == "123456")
    {
        QMessageBox msg(QMessageBox::Information,
                        "Information",
                        "login sucessfully!",
                        QMessageBox::Ok,
                        this);

        int res = msg.exec();
        if(res == QMessageBox::Ok)
        {
            emit this->sig_login();
            this->close();

        }

    }
    else
    {
        QMessageBox msg(QMessageBox::Question,
                        "Question",
                        "wrong user name or password, try again?",
                        QMessageBox::Yes|QMessageBox::No,
                        this);

        int res = msg.exec();
        if(res == QMessageBox::Yes)
        {
            ui->lineEditPassword->clear();
        }
        else
        {
              this->close();

        }

    }


}

void MyWidget::on_btnCancel_clicked()
{


    int res =  QMessageBox::question(this,
                               "Question",
                               "will quit login?",
                               QMessageBox::Yes|QMessageBox::No);
    if(res == QMessageBox::Yes)
    {
        this->close();

    }
    else
    {

    }

}

widgetb.cpp

#include "widgetb.h"
#include "ui_widgetb.h"

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

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

void WidgetB::slot_login()
{
    this->show();

}

运行结果

Qt / day03_第3张图片

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