当前位置:   article > 正文

嵌入式:QT Day2

嵌入式:QT Day2

 一、继续完善登录框,当登陆成功时,关闭登陆页面,跳转到新的界面中

源码:

widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QDebug> //用于打印输出
  5. #include <QIcon> //图标头文件
  6. #include <QPushButton> //按钮类头文件
  7. #include <QLineEdit> //行编辑器类
  8. #include <QLabel> //标签文件
  9. class Widget : public QWidget
  10. {
  11. Q_OBJECT
  12. public:
  13. Widget(QWidget *parent = nullptr);
  14. ~Widget();
  15. //标签类
  16. QLabel *lab1;
  17. QLabel *lab2;
  18. QLabel *lab3;
  19. //行编辑器类
  20. QLineEdit *edit1;
  21. QLineEdit *edit2;
  22. //按钮类
  23. QPushButton *btn1;
  24. QPushButton *btn2;
  25. //自定义信号
  26. signals:
  27. void jump(); //跳转信号
  28. public slots:
  29. void cancel_slot();
  30. void login_slot();
  31. };
  32. #endif // WIDGET_H

second.h

  1. #ifndef SECOND_H
  2. #define SECOND_H
  3. #include <QWidget>
  4. #include <QDebug> //用于打印输出
  5. #include <QIcon> //图标头文件
  6. #include <QPushButton> //按钮类头文件
  7. #include <QLineEdit> //行编辑器类
  8. #include <QLabel> //标签文件
  9. namespace Ui {
  10. class Second;
  11. }
  12. class Second : public QWidget
  13. {
  14. Q_OBJECT
  15. public:
  16. explicit Second(QWidget *parent = nullptr);
  17. ~Second();
  18. //标签类
  19. QLabel *lab1;
  20. public slots:
  21. void jump_slot();
  22. private:
  23. Ui::Second *ui;
  24. };
  25. #endif // SECOND_H

widget.cpp

  1. #include "widget.h"
  2. Widget::Widget(QWidget *parent)
  3. : QWidget(parent)
  4. {
  5. //设置整体大小、标题及图标
  6. this->setFixedSize(700, 600);
  7. this->setWindowTitle("IKUN真爱小屋❤");
  8. this->setWindowIcon(QIcon(":/icon/1.jpeg"));
  9. this->setWindowOpacity(0.95); //设置透明度
  10. //设置Logo标签
  11. lab1 = new QLabel(this);
  12. lab1->resize(700,200);
  13. lab1->setPixmap(QPixmap(":/icon/2.JPG"));
  14. lab1->setScaledContents(true); //设置内容自适应
  15. //设置用户和密码所图标
  16. lab2 = new QLabel(this);
  17. lab2->resize(50,50);
  18. lab2->setPixmap(QPixmap(":/icon/username.png"));
  19. lab2->setScaledContents(true);
  20. lab2->move(150,260);
  21. lab3 = new QLabel(this);
  22. lab3->resize(50,50);
  23. lab3->setPixmap(QPixmap(":/icon/passwd.jpg"));
  24. lab3->setScaledContents(true);
  25. lab3->move(150,360);
  26. //设置行编辑器
  27. edit1 = new QLineEdit(this);
  28. edit1->resize(190, 40);
  29. edit1->move(280, 265);
  30. edit1->setStyleSheet("border : none; "
  31. "border-bottom: 2px solid grey;");
  32. edit1->setPlaceholderText("账号:");
  33. edit2 = new QLineEdit(this);
  34. edit2->resize(190, 40);
  35. edit2->move(280, 365);
  36. edit2->setStyleSheet("border : none; "
  37. "border-bottom: 2px solid grey;");
  38. edit2->setPlaceholderText("密码:");
  39. edit2->setEchoMode(QLineEdit::Password);
  40. //设置按钮 登录
  41. btn1 = new QPushButton(this);
  42. btn1->setText("登录");
  43. btn1->resize(130,40);
  44. btn1->move(150, 490);
  45. btn1->setIcon(QIcon(":/icon/login.png"));
  46. //手动将登录与自定义的槽函数进行连接,该连接是友好的连接qt-5
  47. connect(btn1, &QPushButton::clicked, this, &Widget::login_slot);
  48. //设置按钮 取消
  49. btn2 = new QPushButton(this);
  50. btn2->setText("取消");
  51. btn2->resize(130,40);
  52. btn2->move(440, 490);
  53. btn2->setIcon(QIcon(":/icon/cancel.png"));
  54. //手动将取消按钮的clicked信号与自定义的槽函数进行连接-qt4
  55. connect(btn2, SIGNAL(clicked()), this, SLOT(cancel_slot()));
  56. }
  57. Widget::~Widget()
  58. {
  59. }
  60. //自定义槽函数的实现
  61. void Widget::cancel_slot(){
  62. this->close();
  63. }
  64. //自定义槽函数的实现
  65. void Widget::login_slot(){
  66. if(this->edit1->text() == "admin" && this->edit2->text() == "123456"){
  67. qDebug() << "登陆成功!";
  68. emit jump(); //发射跳转函数信号
  69. this->close();
  70. }else{
  71. qDebug() << "登陆失败,请重新登录!";
  72. this->edit2->clear();
  73. }
  74. }

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. this->setWindowTitle("登录成功提示");
  10. this->setWindowIcon(QIcon(":/icon/3.jpeg"));
  11. //设置跳转标签
  12. lab1 = new QLabel(this);
  13. lab1->setText("登陆成功!");
  14. lab1->resize(390,300);
  15. lab1->setAlignment(Qt::AlignCenter);
  16. }
  17. Second::~Second()
  18. {
  19. delete ui;
  20. }
  21. //跳转槽信号
  22. void Second::jump_slot()
  23. {
  24. this->show();
  25. }

main.cpp

  1. #include "widget.h"
  2. #include "second.h"
  3. #include <QApplication>
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication a(argc, argv);
  7. Widget w;
  8. w.show();
  9. Second s; //实例化第二个界面
  10. //将第一个界面发射信号与第二个界面的展示槽函数连接
  11. QObject::connect(&w, &Widget::jump, &s, &Second::jump_slot);
  12. return a.exec();
  13. }

二、新建一个工程文件,将默认提供的代码注释

三、思维导图

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/137407
推荐阅读
  

闽ICP备14008679号