• 使用qt完善对话框功能


    1、

    完善登录框

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

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

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

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

    mianwindow.h

    1. QT_BEGIN_NAMESPACE
    2. namespace Ui { class MainWindow; }
    3. QT_END_NAMESPACE
    4. class MainWindow : public QMainWindow
    5. {
    6. Q_OBJECT
    7. public:
    8. MainWindow(QWidget *parent = nullptr);
    9. ~MainWindow();
    10. signals:
    11. void jump(); //自定义跳转信号函数
    12. private slots:
    13. void on_pushButton_clicked();
    14. void on_pushButton_2_clicked();
    15. private:
    16. Ui::MainWindow *ui;
    17. Second *s1; //定义另一个界面的指针
    18. };
    19. #endif // MAINWINDOW_H

    second.h

    1. #ifndef SECOND_H
    2. #define SECOND_H
    3. #include
    4. namespace Ui {
    5. class Second;
    6. }
    7. class Second : public QDialog
    8. {
    9. Q_OBJECT
    10. public:
    11. explicit Second(QWidget *parent = nullptr);
    12. ~Second();
    13. public slots:
    14. void jump_slot(); //接收跳转信号的槽函数
    15. private:
    16. Ui::Second *ui;
    17. };
    18. #endif // SECOND_H

    mianwindow.cpp

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. MainWindow::MainWindow(QWidget *parent)
    4. : QMainWindow(parent)
    5. , ui(new Ui::MainWindow)
    6. {
    7. ui->setupUi(this);
    8. ui->label->setPixmap(QPixmap("D:\\QTtupian\\jimoaqing.gif"));
    9. ui->label->setScaledContents(true);
    10. ui->label_2->setPixmap(QPixmap("D:\\QTtupian\\zhanghao.jpg"));
    11. ui->label_2->setScaledContents(true);
    12. ui->label_3->setPixmap(QPixmap("D:\\QTtupian\\mima.jpg"));
    13. ui->label_3->setScaledContents(true);
    14. s1 = new Second; //给另一个界面实例化空间
    15. //将当前界面的信号,与s1界面的槽函数进行连接
    16. connect(this,&MainWindow::jump, s1, &Second::jump_slot);
    17. }
    18. MainWindow::~MainWindow()
    19. {
    20. delete ui;
    21. }
    22. void MainWindow::on_pushButton_clicked()
    23. {
    24. if(ui->lineEdit->text()=="admin"&&ui->lineEdit_2->text()=="123456")
    25. {
    26. //信息对话框
    27. QMessageBox box(QMessageBox::Question,"信息对话框","登录成功",
    28. QMessageBox::Ok,this);
    29. box.setDefaultButton(QMessageBox::Ok); //默认到ok上
    30. int ret = box.exec(); //运行对话框
    31. if(ret == QMessageBox::Ok)
    32. {
    33. emit jump(); //发送跳转信息
    34. this->hide(); //将当前界面隐藏
    35. }
    36. }
    37. else
    38. {
    39. //错误对话框
    40. QMessageBox box(QMessageBox::Question,"错误对话框","账号密码不匹配,是否重新登录",
    41. QMessageBox::Ok|QMessageBox::Cancel,this);
    42. box.setDefaultButton(QMessageBox::Ok); //默认到ok上
    43. int ret = box.exec(); //运行对话框
    44. switch(ret)
    45. {
    46. case QMessageBox::Ok:
    47. ui->lineEdit->clear(); //清楚账号密码内容
    48. ui->lineEdit_2->clear();
    49. break;
    50. case QMessageBox::Cancel:
    51. //ret=box.close();
    52. break;
    53. }
    54. }
    55. }
    56. void MainWindow::on_pushButton_2_clicked()
    57. {
    58. //问题对话框
    59. int ret = QMessageBox::question(this,"问题对话框","是否确定要退出登录",
    60. QMessageBox::Yes|QMessageBox::No,
    61. QMessageBox::No);
    62. switch(ret)
    63. {
    64. case QMessageBox::Yes:
    65. this->close(); //关闭窗口
    66. break;
    67. case QMessageBox::No:
    68. break;
    69. }
    70. }

    second.cpp

    1. #include "second.h"
    2. #include "ui_second.h"
    3. Second::Second(QWidget *parent) :
    4. QDialog(parent),
    5. ui(new Ui::Second)
    6. {
    7. ui->setupUi(this);
    8. }
    9. Second::~Second()
    10. {
    11. delete ui;
    12. }
    13. //接收跳转信号对应的槽函数
    14. void Second::jump_slot()
    15. {
    16. this->show(); //将自己界面进行展示
    17. }

    主函数

    1. #include "mainwindow.h"
    2. #include
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. MainWindow w;
    7. w.show();
    8. return a.exec();
    9. }

    2、思维导图

  • 相关阅读:
    DTO的作用
    ansible
    容易对一个异性产生依赖感怎么办?
    嵌入式工程师常见面试题1-C_C++语言
    闲话Python编程-数组
    vue2视频video循环渲染卡顿
    【前端】npm常用命令
    2023-09-08力扣每日一题
    Mysql之innodb
    yolov1模型
  • 原文地址:https://blog.csdn.net/Venusler/article/details/133003259