• QTday03(信号与槽、对话框)


    今日任务:

    1.

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

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

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

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

    要求:尽量每行代码都有注释

    2.思维导图

    文件目录:

    代码:

    page2.h:

    1. #ifndef PAGE2_H
    2. #define PAGE2_H
    3. #include
    4. #include
    5. namespace Ui {
    6. class Page2;
    7. }
    8. class Page2 : public QWidget
    9. {
    10. Q_OBJECT
    11. public:
    12. explicit Page2(QWidget *parent = nullptr);
    13. ~Page2();
    14. public slots:
    15. void login_slot();
    16. private:
    17. Ui::Page2 *ui;
    18. };
    19. #endif // PAGE2_H

    widget.h:

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. QT_BEGIN_NAMESPACE
    8. namespace Ui { class Widget; }
    9. QT_END_NAMESPACE
    10. class Widget : public QWidget
    11. {
    12. Q_OBJECT
    13. public:
    14. Widget(QWidget *parent = nullptr);
    15. ~Widget();
    16. public slots:
    17. void loginButton_slot();
    18. signals:
    19. void login_signal();
    20. private:
    21. Ui::Widget *ui;
    22. };
    23. #endif // WIDGET_H

    main.cpp:

    1. #include "widget.h"
    2. #include "page2.h"
    3. #include
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication a(argc, argv);
    7. Widget w;
    8. w.show();
    9. Page2 p2;
    10. QObject::connect(&w,&Widget::login_signal,&p2,&Page2::login_slot);
    11. return a.exec();
    12. }

    page2.cpp:

    1. #include "page2.h"
    2. #include "ui_page2.h"
    3. Page2::Page2(QWidget *parent) :
    4. QWidget(parent),
    5. ui(new Ui::Page2)
    6. {
    7. ui->setupUi(this);
    8. QMovie *movie = new QMovie(":/111/cai.gif");
    9. ui->label->setMovie(movie);
    10. ui->label->setScaledContents(true);
    11. movie->start();
    12. }
    13. Page2::~Page2()
    14. {
    15. delete ui;
    16. }
    17. void Page2::login_slot()
    18. {
    19. this->show();
    20. }

    widget.cpp:

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. this->setFixedSize(560,430);
    9. this->setStyleSheet("background-color:#faf7ec");
    10. this->setWindowFlag(Qt::FramelessWindowHint);//无边框
    11. QMovie *movie = new QMovie(":/111/cai.gif");
    12. ui->backLabel->setMovie(movie);
    13. ui->backLabel->setScaledContents(true);
    14. movie->start();
    15. ui->closeButton->setStyleSheet("border-image:url(:/111/basketball.png)");
    16. ui->avatorLabel->resize(60,60);
    17. ui->avatorLabel->setStyleSheet("border-image:url(:/111/user.png);border-radius:30px");
    18. ui->accountLabel->setPixmap(QPixmap(":/111/account.jpg"));
    19. //ui->accountLabel->resize(40,40);
    20. ui->accountLabel->setScaledContents(true);
    21. ui->passwdLabel->setPixmap(QPixmap(":/111/passwd.jpg"));
    22. //ui->passwdLabel->resize(40,40);
    23. ui->passwdLabel->setScaledContents(true);
    24. ui->accoountLine->setPlaceholderText("账号");
    25. ui->passwdLine->setPlaceholderText("密码");
    26. ui->passwdLine->setEchoMode(QLineEdit::Password);
    27. ui->loginLabel->setPixmap(QPixmap(":/111/2.png"));
    28. ui->loginLabel->setScaledContents(true);
    29. ui->loginButton->setStyleSheet("background-color:#409EFF;border-radius:5px");
    30. connect(ui->closeButton,SIGNAL(clicked()),this,SLOT(close()));
    31. connect(ui->loginButton,&QPushButton::clicked,this,&Widget::loginButton_slot);
    32. }
    33. Widget::~Widget()
    34. {
    35. delete ui;
    36. }
    37. void Widget::loginButton_slot()
    38. {
    39. if(ui->accoountLine->text()=="admin"&&ui->passwdLine->text()=="123456"){
    40. qDebug() << "登录成功" <
    41. QMessageBox::information(this,"提示","登录成功",QMessageBox::Ok);
    42. this->close();
    43. //开启新窗口
    44. emit login_signal();
    45. }else{
    46. qDebug() << "账号或者密码错误" <
    47. int res=QMessageBox::information(this,"提示","账号或者密码错误,是否继续登录",QMessageBox::Ok|QMessageBox::No);
    48. if(res==QMessageBox::Ok){
    49. ui->passwdLine->setText("");
    50. }else{
    51. this->close();
    52. }
    53. }
    54. }

            运行结果:

    今日思维导图:

  • 相关阅读:
    SpringBoot整合Mybatis逆向工程
    软件测试基本概念
    vue中使用video.js,且可以截图、录制和下载视频
    二分法之旋转数组
    A. Dunai 2022CCPC威海 (gym104023A)
    Monkey命令
    Java 之 ElasticSearch8.x.x 【一篇文章精通系列】【ES的基本操作,ES安装,ES head + Kibana】
    WPF的_Expander控件
    基本数据类型----Python入门之玩转列表
    Pandas处理异常值的两种方法
  • 原文地址:https://blog.csdn.net/weixin_53762703/article/details/133932539