• Day3 Qt


    作业

    1.

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

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

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

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

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

    1. //my_widget.cpp
    2. #include "my_widget.h"
    3. #include "ui_my_widget.h"
    4. My_Widget::My_Widget(QWidget *parent)
    5. : QWidget(parent)
    6. , ui(new Ui::My_Widget)
    7. {
    8. ui->setupUi(this);
    9. //窗口的相关设置
    10. // this -> resize(800,500);
    11. this -> setWindowTitle("QQ聊天"); //设置窗口标题
    12. this -> setWindowIcon(QIcon(":/pictrue/pictrue/qq.png"));//设置窗口图标
    13. //标签相关设置
    14. ui-> logoLab ->setPixmap(QPixmap(":/pictrue/pictrue/logo.png"));//设置登录界面主图
    15. ui -> logoLab -> setScaledContents(true);//主图自适应标签大小
    16. //账号和密码
    17. ui -> userNameLab -> resize(40,40);//设置账户标签图标大小
    18. ui -> userNameLab -> setPixmap(QPixmap(":/pictrue/pictrue/wodepeizhenshi.png"));//设置账户标签图标
    19. ui -> userNameLab -> setScaledContents(true);//设置账户标签图标自适应标签大小
    20. ui -> passwdLab -> resize(40,40);//设置密码标签大小
    21. ui -> passwdLab ->setPixmap(QPixmap(":/pictrue/pictrue/passwd.jpg"));//设置密码标签图标
    22. ui -> passwdLab ->setScaledContents(true);//设置密码标签图标自适应标签大小
    23. //账号密码输入
    24. ui -> usrEdit ->setPlaceholderText("QQ账号/手机号码/QQ邮箱");//在账户输入行编译器上设置隐性输入提示
    25. ui -> passwdEdit -> setPlaceholderText("请输入密码");//在密码输入行编译器上设置隐性输入提示
    26. ui -> passwdEdit -> setEchoMode(QLineEdit::Password);//将密码行编译器设置为不可见属性防止密码泄露
    27. //登录按钮
    28. ui -> btn1 ->setIcon(QIcon(":/pictrue/pictrue/login.png"));//登录按钮设置添加图片
    29. ui -> btn2 ->setIcon(QIcon(":/pictrue/pictrue/cancel.png"));//取消登录按钮设置添加图片
    30. connect(ui ->btn1,&QPushButton::clicked,this,&My_Widget::btn1_slot);//信号触发函数,按下登录按钮,当登录成功则响应相应槽函数,判断账号是否输入正确
    31. // connect(ui->btn2,SIGNAL(clicked()),this,SLOT(my_slot()));
    32. }
    33. My_Widget::~My_Widget()
    34. {
    35. delete ui;
    36. }
    37. void My_Widget::my_slot() //QT4版本 槽函数
    38. {
    39. this ->close();//当前界面关闭
    40. }
    41. void My_Widget:: btn1_slot() //qt5版本信号与槽函数连接,自定义
    42. {
    43. QString s = ui ->usrEdit->text();//存入输入的数据
    44. QString v = ui ->passwdEdit->text();//存入输入的数据
    45. //判断账号密码输入正确
    46. if(s=="admin"&&v=="123456")
    47. {
    48. qDebug() << "登录成功";//终端输出登录成功
    49. //跳转另一个窗口
    50. int res=QMessageBox::information(this,"登录成功", //调用静态消息对话框
    51. "密码正确,请进入聊天界面", //参数内容书写
    52. QMessageBox::Ok); //参数判断是否ok 返回ok
    53. if(res==QMessageBox::Ok) //判断选择按下按钮ok
    54. {
    55. emit Jump(); //则进行跳转界面,先发送跳转信号,通过跳转信号链接第二窗口的show函数
    56. }
    57. this->close();//跳转是将当前登录界面关闭
    58. }
    59. else
    60. {
    61. //============基于属性版本==============
    62. // QMessageBox msg( //调用属性消息对话框
    63. // QMessageBox::Critical, //输出提示错误信息
    64. // "错误",
    65. // "账号和密码不匹配,是否重新登录",
    66. // QMessageBox::Yes | QMessageBox::No); //判断按下确认还是否定
    67. // int ret=msg.exec(); 属性消息设置成功编译执行弹出后返回一个确认键值
    68. // if(ret==QMessageBox::Yes) //判断是否按下确认键
    69. // {
    70. // ui ->usrEdit->clear(); //按下yes则清空账户行编译器内容重新输入账号
    71. // ui->passwdEdit -> clear();//按下yes则清空密码行编译器内容重新输入密码
    72. // qDebug()<<"请重新登录"; //终端输出重新登入
    73. // }
    74. // else //若按下No键,则进行退出登录
    75. // {
    76. // this->close();//退出当前登录界面
    77. // }
    78. // }
    79. //============基于属性版本==============
    80. //============基于静态成员函数版本==============
    81. int res=QMessageBox::critical(this,"输入错误", //调用静态成员函数错误输出信息框
    82. "账号和密码不匹配,是否重新登录", // 函数内部具体实参
    83. QMessageBox::Yes | QMessageBox::No); //写入消息框按键有哪几个
    84. if(res==QMessageBox::Yes) //如果返回值按下的是YES
    85. {
    86. ui ->usrEdit->clear(); //清空账号信息
    87. ui->passwdEdit -> clear(); //清空密码信息
    88. }
    89. else
    90. {
    91. this->close(); //否则按下NO,关闭当前登录界面
    92. }
    93. //============基于静态成员函数版本==============
    94. }
    95. }
    96. void My_Widget::on_btn2_clicked() //取消键被按下,执行弹出消息框
    97. {
    98. //============基于属性版本==============
    99. // QMessageBox msg1(
    100. // QMessageBox::Information,
    101. // "取消登录",
    102. // "请问您是否需要取消登录",
    103. // QMessageBox::Yes | QMessageBox::No);
    104. // int ret=msg1.exec();
    105. // if(ret==QMessageBox::Yes)
    106. // {
    107. // this->close();
    108. // }
    109. // else
    110. // {
    111. // ui ->usrEdit->clear();
    112. // ui->passwdEdit -> clear();
    113. // qDebug()<<"请重新登录";
    114. // }
    115. //============基于属性版本==============
    116. //============基于静态成员函数版本==============
    117. int res=QMessageBox::information(this,"取消登录",
    118. "请问您是否需要取消登录",
    119. QMessageBox::Yes | QMessageBox::No);
    120. if(res==QMessageBox::Yes) //若按下YES,则取消登录关闭登录页
    121. {
    122. this->close();
    123. }
    124. else //按下NO,则不取消登录
    125. {
    126. ui ->usrEdit->clear();
    127. ui->passwdEdit -> clear(); //清空输入端,终端输入提示信息请重新登录
    128. qDebug()<<"请重新登录";
    129. }
    130. //============基于静态成员函数版本==============
    131. }
    1. //my_widget.h
    2. #ifndef MY_WIDGET_H
    3. #define MY_WIDGET_H
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. QT_BEGIN_NAMESPACE
    12. namespace Ui { class My_Widget; }
    13. QT_END_NAMESPACE
    14. class My_Widget : public QWidget
    15. {
    16. Q_OBJECT
    17. public:
    18. My_Widget(QWidget *parent = nullptr);
    19. ~My_Widget();
    20. public slots:
    21. void btn1_slot();
    22. void my_slot();
    23. signals:
    24. void Jump();
    25. private slots:
    26. void on_btn2_clicked();
    27. private:
    28. Ui::My_Widget *ui;
    29. };
    30. #endif // MY_WIDGET_H
    1. //main.cpp
    2. #include "my_widget.h"
    3. #include "second.h"
    4. #include
    5. int main(int argc, char *argv[])
    6. {
    7. QApplication a(argc, argv);
    8. My_Widget w;
    9. w.show();
    10. Second s;
    11. QObject ::connect(&w,&My_Widget::Jump,&s,&Second::Jump_slot);//调用caonnect函数,第一个登录窗口成功后进入新的对话框
    12. return a.exec();
    13. }

  • 相关阅读:
    Swift 周报 第十七期
    2020研究生数学建模竞赛C题——面向康复工程的脑电信号分析和判别模型——论文研读
    【QML】在QML中布局的四种方法
    市场的新宠:4G智能手表
    CSDN竞赛第五期竞赛-习题解析
    Linux常用文件权限命令详解
    更改linux centos 7系统语言
    Java 18 还未用上,Java 19 最新两大特性曝光
    数据结构与算法:括号生成
    InternalResourceViewResolver类简介说明
  • 原文地址:https://blog.csdn.net/weixin_42019010/article/details/133935563