• Qt(day2)


    思维导图

     小练习

    完善登录框

    点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。
    如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面
    点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录
    要求:消息对话框,对象版和静态成员函数版至少各实现一个

    mywnd.h

    1. #ifndef MYWND_H
    2. #define MYWND_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include"second.h"
    10. QT_BEGIN_NAMESPACE
    11. namespace Ui { class MyWnd; }
    12. QT_END_NAMESPACE
    13. class MyWnd : public QMainWindow
    14. {
    15. Q_OBJECT
    16. signals:
    17. void btn1_signal();
    18. public slots:
    19. void btn1_slot();
    20. void btn2_slot();
    21. public:
    22. MyWnd(QWidget *parent = nullptr);
    23. ~MyWnd();
    24. private:
    25. Ui::MyWnd *ui;
    26. QPushButton *btn1;
    27. QPushButton *btn2;
    28. QLineEdit *edit1;
    29. QLineEdit *edit2;
    30. QLabel *lab1;
    31. QLabel *lab2;
    32. QLabel *lab3;
    33. Second *s1;
    34. };
    35. #endif // MYWND_H

    second.h

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

    mywnd.cpp

    1. #include "mywnd.h"
    2. #include "ui_mywnd.h"
    3. MyWnd::MyWnd(QWidget *parent)
    4. : QMainWindow(parent)
    5. , ui(new Ui::MyWnd)
    6. {
    7. ui->setupUi(this);
    8. //将当前界面的信号,与s1界面的槽函数进行连接
    9. s1=new Second;
    10. connect(this,&MyWnd::btn1_signal,s1,&Second::jump_slot);
    11. //对页面进行修改
    12. this->setFixedSize(QSize(800,700)); //固定文件框的大小
    13. this->setWindowTitle("华清远见"); //设置文件的标题
    14. this->setWindowIcon(QIcon(":/icon/wodepeizhenshi.png")); //为标题加图片
    15. //设置logo图片
    16. lab1=new QLabel(this); //构造一个lab,指定父组件
    17. lab1->resize(800,250); //设置图片尺寸
    18. lab1->setPixmap(QPixmap(":/icon/logo.png")); //设置logo图片
    19. lab1->setScaledContents(true); //设置图片自适应
    20. //设置username图片
    21. lab2=new QLabel(this); //构造一个lab,指定父组件
    22. lab2->resize(50,50); //设置图片尺寸
    23. lab2->move(230,300); //设置图片位置
    24. lab2->setPixmap(QPixmap(":/icon/username.jpg")); //设置logo图片
    25. lab2->setScaledContents(true); //设置图片自适应
    26. //设置passwd图片
    27. lab3=new QLabel(this); //构造一个lab,指定父组件
    28. lab3->resize(50,50); //设置图片尺寸
    29. lab3->move(230,380); //设置图片位置
    30. lab3->setPixmap(QPixmap(":/icon/passwd.jpg")); //设置logo图片
    31. lab3->setScaledContents(true); //设置图片自适应
    32. //设置username输入文本框
    33. edit1=new QLineEdit(this); //构造一个行编辑器,指定父组件
    34. edit1->resize(300,50); //设置行编辑器大小
    35. edit1->move(300,300); //设置行编辑器位置
    36. edit1->setEchoMode(QLineEdit::Normal); //设置明文模式
    37. edit1->setPlaceholderText("username"); //设置占位符
    38. //设置passwd输入文本框
    39. edit2=new QLineEdit(this); //构造一个行编辑器,指定父组件
    40. edit2->resize(300,50); //设置行编辑器大小
    41. edit2->move(300,380); //设置行编辑器位置
    42. edit2->setEchoMode(QLineEdit::Password); //设置密文模式
    43. edit2->setPlaceholderText("passwd"); //设置占位符
    44. //设置登录按钮
    45. btn1=new QPushButton("登录",this); //构造登录按键,指定父组件
    46. btn1->resize(380,70); //设置按键大小
    47. btn1->setIcon(QIcon(":/icon/login.png")); //设置按键图标
    48. btn1->move(lab3->x(),lab3->y()+80); //设置按键位置
    49. //设置取消按钮
    50. btn2=new QPushButton("取消",this); //构造取消按键,指定父组件
    51. btn2->resize(380,70); //设置按键大小
    52. btn2->setIcon(QIcon(":/icon/cancel.png")); //设置按键图标
    53. btn2->move(btn1->x(),btn1->y()+90); //设置按键位置
    54. //登录按键的信号与槽连接
    55. connect(btn1,&QPushButton::clicked,this,&MyWnd::btn1_slot);
    56. //取消按键的信号与槽连接
    57. connect(btn2,&QPushButton::clicked,this,&MyWnd::btn2_slot);
    58. }
    59. MyWnd::~MyWnd()
    60. {
    61. delete ui;
    62. }
    63. void MyWnd::btn1_slot(){
    64. QMessageBox box(this); //基于属性版本实现消息对话框
    65. if(edit1->text()=="admin"&&edit2->text()=="123456"){
    66. box.setIcon(QMessageBox::Information);
    67. box.setWindowTitle("登陆成功");
    68. box.setText("登陆成功");
    69. box.setStandardButtons(QMessageBox::Ok);
    70. box.setDefaultButton(QMessageBox::Ok);
    71. box.exec();
    72. emit btn1_signal(); //发射跳转的信号
    73. this->hide(); //隐藏第一个页面
    74. }
    75. else{
    76. box.setIcon(QMessageBox::Question);
    77. box.setWindowTitle("匹配错误");
    78. box.setText("账号密码不匹配,是否重新登录?");
    79. box.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
    80. box.setDefaultButton(QMessageBox::Ok);
    81. int ret=box.exec();
    82. if(ret==QMessageBox::Ok){
    83. edit1->clear(); //清空用户框中的内容
    84. edit2->clear(); //清空密码框中的内容
    85. }
    86. else{
    87. this->close(); //关闭页面
    88. }
    89. }
    90. }
    91. void MyWnd::btn2_slot(){
    92. int ret=QMessageBox::warning(this, //基于静态成员函数版本的消息对话框
    93. "是否退出",
    94. "是否确定要退出登录?",
    95. QMessageBox::Yes|QMessageBox::No,
    96. QMessageBox::No);
    97. if(ret==QMessageBox::Yes){
    98. this->close();
    99. }
    100. }

    second.cpp

    1. #include "second.h"
    2. #include "ui_second.h"
    3. Second::Second(QWidget *parent) :
    4. QWidget(parent),
    5. ui(new Ui::Second)
    6. {
    7. ui->setupUi(this);
    8. }
    9. Second::~Second()
    10. {
    11. delete ui;
    12. }
    13. void Second::jump_slot(){
    14. this->show();
    15. }

    main.cpp

    1. #include "mywnd.h"
    2. #include "second.h"
    3. #include <QApplication>
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication a(argc, argv);
    7. MyWnd w;
    8. w.show();
    9. Second s;
    10. //在主调函数中将第一个界面的信号与第二个界面的槽函数连接
    11. //QObject::connect(&w,&MyWnd::btn1_signal,&s,&Second::jump_slot);
    12. return a.exec();
    13. }
  • 相关阅读:
    谷歌沉浸式内容负责人:更看好开放的Web AR技术
    手把手教学:二阶魔方还原
    python操作elasticsearch
    基于PSO算法的功率角摆动曲线优化研究(Matlab代码实现)
    Java 反射机制详解
    01PCB设计概述
    P2719 搞笑世界杯 (期望dp
    联影医疗通过注册:拟募资125亿 薛敏控制32%股权
    JAVA代码审计——SQL注入靶场审计01
    openGauss每日一练第10天 | openGauss逻辑结构:表空间管理
  • 原文地址:https://blog.csdn.net/qq_53268516/article/details/132996349