• qt day2


    完善登录框

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

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

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

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

    登录失败功能、取消键功能

     登录成功弹窗、登录后界面跳转

     

     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:
    11. explicit Second(QWidget *parent = nullptr);
    12. ~Second();
    13. private:
    14. Ui::Second *ui;
    15. public slots:
    16. void jump_slot();
    17. };
    18. #endif // SECOND_H

    widget.h

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

     main.cpp

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

     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. {
    15. this->show();//展示
    16. }

     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. s1=new Second;
    9. connect(this,&Widget::jump,s1,&Second::jump_slot);
    10. resize(QSize(960,1200)); //使用匿名对象作为函数参数设置当前组件的尺寸
    11. setFixedSize(960,1200); //设置固定尺寸
    12. setWindowTitle("miHoYo"); //设置窗口标题
    13. setWindowIcon(QIcon(":/icon/qq.png")); //设置窗口图标
    14. setStyleSheet("background-color:white;"); //设置样式表
    15. setWindowOpacity(2); //设置窗口透明度
    16. lab1 = new QLabel(this);
    17. lab1->resize(960,532); //重新设置尺寸
    18. lab1->setAlignment(Qt::AlignCenter);
    19. // lab1->setStyleSheet("background-color:yellow;");
    20. lab1->setPixmap(QPixmap(":/icon/logo.png")); //设置图片
    21. lab1->setScaledContents(true);
    22. lab2 = new QLabel(this);
    23. lab2->resize(65,71); //重新设置尺寸
    24. lab2->move(lab1->x()+200,lab1->y()+700);
    25. //lab2->setStyleSheet("background-color:yellow;");
    26. lab2->setPixmap(QPixmap(":/icon/user.jpg")); //设置图片
    27. lab2->setScaledContents(true);
    28. lab3 = new QLabel(this);
    29. lab3->resize(65,71); //重新设置尺寸
    30. lab3->move(lab2->x(),lab2->y()+150);
    31. lab3->setAlignment(Qt::AlignCenter);
    32. //lab3->setStyleSheet("background-color:yellow;");
    33. lab3->setPixmap(QPixmap(":/icon/passwd.jpg")); //设置图片
    34. lab3->setScaledContents(true);
    35. edit1 = new QLineEdit(this);
    36. edit1->resize(350,50);
    37. edit1->move(lab2->x()+120, lab2->y());
    38. edit1->setEchoMode(QLineEdit::Normal); //设置回显模式
    39. edit1->setMaxLength(11);
    40. edit1->setPlaceholderText("账号/手机/邮箱"); //设置占位文本
    41. edit2 = new QLineEdit(this);
    42. edit2->resize(350,50);
    43. edit2->move(lab3->x()+120, lab3->y());
    44. edit2->setEchoMode(QLineEdit::Password); //设置回显模式
    45. edit2->setMaxLength(10);
    46. edit2->setPlaceholderText("密码"); //设置占位文本
    47. btn1 = new QPushButton;//无参构造
    48. connect(btn1,&QPushButton::clicked,this,&Widget::login_clicked);
    49. btn1->setParent(this); //将当前界面作为父组件
    50. btn1->setText("登录"); //设置按钮上的文本内容
    51. btn1->resize(100,30); //重新设置组件尺寸
    52. btn1->setIcon(QIcon(":/icon/login.png")); //设置图标
    53. btn1->move(edit2->x()-20,edit2->y()+150); //移动组件位置
    54. btn2 = new QPushButton; //无参构造
    55. connect(btn2,&QPushButton::clicked,this,&Widget::cancel_clicked);
    56. btn2->setParent(this); //将当前界面作为父组件
    57. btn2->setText("取消"); //设置按钮上的文本内容
    58. btn2->resize(100,30); //重新设置组件尺寸
    59. btn2->setIcon(QIcon(":/icon/cancel.png")); //设置图标
    60. btn2->move(btn1->x()+250,btn1->y());
    61. }
    62. Widget::~Widget()
    63. {
    64. delete ui;
    65. }
    66. //登录按钮对应的槽函数
    67. void Widget::login_clicked()
    68. {
    69. //登录失败
    70. if(edit1->text()!="admin"&&edit2->text()!="123456")
    71. {
    72. //调用构造函数实例化对象
    73. QMessageBox box(QMessageBox::Critical,//图标
    74. "错误",//对话框标题
    75. "账号密码不匹配,是否重新登录",//对话框文本
    76. QMessageBox::Yes|QMessageBox::No,//提供的按钮
    77. this);//父组件
    78. box.setDefaultButton(QMessageBox::Yes);
    79. box.setButtonText(QMessageBox::Yes,"OK");
    80. box.setButtonText(QMessageBox::No,"cancel");
    81. //调用exec函数运行对话框
    82. int ret = box.exec();
    83. //对结果进行判断
    84. if(ret==QMessageBox::Yes)
    85. {
    86. //清空内容
    87. edit1->clear();
    88. }
    89. else
    90. {
    91. //关闭界面
    92. this->close();
    93. }
    94. }
    95. //登录成功
    96. else
    97. {
    98. //调用构造函数实例化对象
    99. QMessageBox box(QMessageBox::NoIcon,//图标
    100. " ",//对话框标题
    101. "登录成功",//对话框文本
    102. QMessageBox::Ok,//提供的按钮
    103. this);//父组件
    104. box.exec();//运行对话框
    105. emit jump();//跳转界面
    106. this->close();//关闭当前界面
    107. }
    108. }
    109. //退出按钮
    110. void Widget::cancel_clicked()
    111. {
    112. int ret=QMessageBox::warning(this,
    113. "警告",
    114. "是否确定要退出登录",
    115. QMessageBox::Yes | QMessageBox::No,
    116. QMessageBox::No);
    117. //对结果进行判断如果点yes则关闭
    118. if(ret==QMessageBox::Yes)
    119. {
    120. this->close();//关闭界面
    121. }
    122. }

     

     

  • 相关阅读:
    paddlepaddle 38 使用aistudio部署自己训练的动态图模型
    “errcode“:40164,“errmsg“:“invalid ip ...微信公众号开发调用失败的解决办法
    计算机组成原理 学习笔记(持续学习中)
    [vue] element的表格fixed悬浮固定列错乱的官方解决办法
    oracle数据库操作—DML
    智慧税务解决方案-最新全套文件
    引擎入门 | Unity UI简介–第1部分(8)
    处理器架构和配置
    GO语言网络编程(并发编程)select
    SpringBoot-32-shiro整合mybatis
  • 原文地址:https://blog.csdn.net/wdc857/article/details/132995174