• QT day3作业


    1.思维导图

     

    2、

    完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面
    如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面
    如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能
    要求:基于属性版和基于静态成员函数版至少各用一个

    头文件:

    widget.h

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include //动图类
    5. #include //按钮类
    6. #include //文本转语音类
    7. #include //对话框类
    8. QT_BEGIN_NAMESPACE
    9. namespace Ui { class Widget; }
    10. QT_END_NAMESPACE
    11. class Widget : public QWidget
    12. {
    13. Q_OBJECT//宏,信号与槽
    14. public:
    15. Widget(QWidget *parent = nullptr);
    16. ~Widget();
    17. signals:
    18. void my_jump();//第一个界面的信号
    19. private:
    20. Ui::Widget *ui;
    21. QTextToSpeech *speecher;//定义一个语音播报着
    22. public slots: //表示该权限下是私有槽函数(一般由系统提供)
    23. void my_slot();
    24. void my_slot1();
    25. };
    26. #endif // WIDGET_H

     sec.h

    1. #ifndef SEC_H
    2. #define SEC_H
    3. #include
    4. #include
    5. namespace Ui {
    6. class sec;
    7. }
    8. class sec : public QWidget
    9. {
    10. Q_OBJECT
    11. public:
    12. explicit sec(QWidget *parent = nullptr);
    13. ~sec();
    14. private:
    15. Ui::sec *ui;
    16. public slots:
    17. void my_jump_slot();//第二个界面的槽函数
    18. };
    19. #endif // SEC_H

     

    主函数:

    main.cpp 

    1. #include "widget.h"
    2. #include "sec.h"
    3. #include
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication a(argc, argv);
    7. Widget w;//实例化第一个窗口
    8. w.show();
    9. sec s; //实例化第二个窗口
    10. //将第一个窗口和第二个窗口连接
    11. QObject::connect(&w,&Widget::my_jump,&s,&sec::my_jump_slot);
    12. return a.exec();
    13. }

    功能函数:

     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. speecher =new QTextToSpeech(this);//给语音播报者实例化空间
    9. //***********************窗口类*******************************//
    10. this->setWindowFlags(Qt::FramelessWindowHint);
    11. //***********************标签类*******************************//
    12. QMovie *mv=new QMovie(":/new/prefix1/22/1.gif");//设置动图
    13. ui->logoLab->setMovie(mv);//将动图放到logo标签上
    14. mv->start();//让动图开始
    15. ui->logoLab->setScaledContents(true);//设置动图自适应
    16. //设置头像样式
    17. ui->labh->setStyleSheet("border-radius:30px");
    18. //手动连接信号和系统的槽函数 基于qt4版的连接 该连接是不友好的连接
    19. connect(ui->cancelButton,SIGNAL(clicked()),this,SLOT(my_slot()));
    20. //手动连接信号和自定义槽函数 基于qt5版的连接 该连接是友好的连接
    21. connect(ui->loginButton,&QPushButton::clicked,this,&Widget::my_slot1);
    22. }
    23. Widget::~Widget()
    24. {
    25. delete ui;
    26. }
    27. void Widget::my_slot() //取消按钮自定义的函数处理
    28. { //基于静态成员函数版本实现
    29. int ret=QMessageBox::question(this,//父组件
    30. "问题",//标题
    31. "您是否确定要退出登录?",//文本
    32. QMessageBox::Yes|QMessageBox::No);//提供的按钮
    33. if(ret==QMessageBox::Yes)//对用户选中的按钮,执行不同的功能
    34. {
    35. this->close();//关闭当前的界面
    36. }
    37. }
    38. void Widget::my_slot1()//登录按钮自定义的函数处理
    39. {
    40. if(ui->lineEdit->text()=="admin" && ui->lineEdit_2->text()=="123456")//判断登录的账号和密码是否正确
    41. {
    42. ui->msgLab->setText("登陆成功!");//修改状态信息标签
    43. speecher->say("登录成功");//语音播报
    44. QMessageBox box(QMessageBox::Information, //基于属性版本
    45. "提示", //标题
    46. "登陆成功", //文本
    47. QMessageBox::Ok, //提供按钮
    48. this); //父对象
    49. int ret=box.exec(); //使用exec()弹出对话框
    50. if(ret==QMessageBox::Ok) //根据用户选中的按钮 执行不同的功能
    51. {
    52. emit this->my_jump();//触发一个界面的信号
    53. this->close(); //关闭当前的界面
    54. }
    55. }else
    56. {
    57. speecher->say("登录失败");//语音播报
    58. int res=QMessageBox::critical(this, //父组件 //基于静态成员函数版本实现
    59. "错误", //标题
    60. "账号和密码不匹配,是否重新登录?",//文本
    61. QMessageBox::Yes|QMessageBox::No);//提供的按钮
    62. ui->msgLab->setText("登陆失败!");//修改状态信息标签
    63. if(res==QMessageBox::Yes) //对用户选中的按钮,执行不同的功能
    64. {
    65. ui->lineEdit_2->setText("");//将密码行编辑器内容清空
    66. }else
    67. {
    68. this->close();//关闭当前的界面
    69. }
    70. }
    71. }

     sec.cpp

    1. #include "sec.h"
    2. #include "ui_sec.h"
    3. sec::sec(QWidget *parent) :
    4. QWidget(parent),
    5. ui(new Ui::sec)
    6. {
    7. ui->setupUi(this);
    8. }
    9. sec::~sec()
    10. {
    11. delete ui;
    12. }
    13. //槽函数的实现
    14. void sec::my_jump_slot()
    15. {
    16. this->show();
    17. }

     实际效果:

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

     

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

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

    代码主要功能截图:

     

  • 相关阅读:
    使用Python进行音频处理
    Spring 源码(1)Spring IOC Bean 创建的整体流程
    萌新卷妹带你逃出算法无名岛第四站
    AndroidStudio编译错误‘android.injected.build.density‘ is deprecated
    SpringBoot3学习笔记01
    非零基础自学Java (老师:韩顺平) 第8章 面向对象编程(中级部分) 8.4 包
    Java绘图-第19章
    【设计模式】 - 结构型模式 - 装饰者模式
    docker 安装minio 一脚shell脚本
    JavaScript系列之赋值运算符
  • 原文地址:https://blog.csdn.net/u014137683/article/details/134430007