• Qt --- Day02


    实现效果:

    点击登录,检验用户密码是否正确,正确则弹出消息框,点击ok转到另一个页面

    不正确跳出错误消息框,默认选线为Cancel,点击Yes继续登录

    点击Cancel跳出问题消息框,默认选项No,单击yes,退出程序,单击No继续登录

    以下是实现的部分代码

    widget.h

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include //基类QWidget的头文件
    4. #include //信息调试类,用于输出数据使用
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include"enter_widget.h"
    11. #include"communication.h"
    12. #include
    13. class Widget : public QWidget
    14. {
    15. Q_OBJECT //QT的信号与槽元对象
    16. public:
    17. Widget(QWidget *parent = nullptr);//默认参数构造函数声明
    18. ~Widget();//虚析构声明
    19. private:
    20. QLabel *pic;
    21. QLabel *tx;
    22. QPushButton* enter;
    23. QPushButton* login;
    24. QPushButton* question;
    25. QLabel* user;
    26. QLabel* passwd;
    27. QLineEdit* user_l;
    28. QLineEdit* passwd_l;
    29. enter_widget* en;
    30. QTimer * time;
    31. };
    32. #endif // WIDGET_H

    widget.cpp

    1. #include "widget.h"
    2. #include
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. {
    6. qDebug()<<this->size(); //获取当前姐买你的尺寸
    7. qDebug()<<this->width(); //获取当前组件的宽度
    8. qDebug()<<this->height(); //获取当前组件的高度
    9. this->setWindowTitle("QQ");
    10. //this->resize(500,400);//重新设置界面大小
    11. //this->resize(QSize(1000,1000));
    12. this->setFixedSize(500,400);//设置固定的界面大小
    13. //this->setMaximumSize(600,700);//最大界面大小
    14. //this->setMinimumSize(200,300);//最小界面大小
    15. this->setWindowIcon(QIcon("://msg/qq.png"));
    16. pic = new QLabel(this);
    17. pic->resize(this->width(),130);
    18. pic->setPixmap(QPixmap("://msg/fm.png"));
    19. pic->setScaledContents(true);
    20. tx = new QLabel(this);
    21. tx->resize(100,100);
    22. tx->move(200,60);
    23. tx->setPixmap(QPixmap("://msg/2.jpg"));
    24. tx->setScaledContents(true);
    25. enter = new QPushButton;
    26. enter->setParent(this);
    27. enter->setText("登录");
    28. enter->resize(100,50);
    29. enter->move(120,300);
    30. enter->setIcon(QIcon("://msg/enter.png"));
    31. enter->setStyleSheet("border:0px solid black;border-radius:10;background-color:#FFFFFF");
    32. login = new QPushButton;
    33. login->setParent(this);
    34. login->setText("注册");
    35. login->resize(100,50);
    36. login->move(280,300);
    37. login->setIcon(QIcon("://msg/enter.png"));
    38. login->setStyleSheet("border:0px solid black;border-radius:10;background-color:#FFFFFF");
    39. // question = new QPushButton;
    40. // question->setParent(this);
    41. // question->setText("问题");
    42. // question->resize(50,50);
    43. // question->move(390,300);
    44. // question->setStyleSheet("border:0px solid black;border-radius:10;background-color:#FFFFFF");
    45. user = new QLabel;
    46. user->setParent(this);
    47. user->setText("用户名:");
    48. user->resize(60,30);
    49. user->setAlignment(Qt::AlignCenter);
    50. //user->setFixedSize(50,20);
    51. user->move(enter->x(),enter->y()-120);
    52. passwd = new QLabel(this);
    53. passwd->setText("密 码:");
    54. passwd->resize(60,30);
    55. passwd->setAlignment(Qt::AlignCenter);
    56. //user->setFixedSize(50,20);
    57. passwd->move(enter->x(),enter->y()-60);
    58. user_l = new QLineEdit(this);
    59. user_l->resize(200,30);
    60. user_l->move(user->x()+60,user->y());
    61. user_l->setPlaceholderText("请输入用户名");
    62. user_l->setStyleSheet("border:0px solid black;border-radius:10;background-color:#b0bfbf");
    63. passwd_l= new QLineEdit(this);
    64. passwd_l->resize(200,30);
    65. passwd_l->move(passwd->x()+60,passwd->y());
    66. passwd_l->setPlaceholderText("请输入密码");
    67. passwd_l->setEchoMode(QLineEdit::Password);
    68. passwd_l->setStyleSheet("border:0px solid black;border-radius:10;background-color:#b0bfbf");
    69. //切换界面
    70. //会话界面
    71. en = new enter_widget;
    72. //交流界面
    73. com = new communication;
    74. connect(enter,&QPushButton::clicked,[=](){
    75. if(user_l->text()==QString("admin") && passwd_l->text() == "123456")
    76. {
    77. QMessageBox succbox(QMessageBox::NoIcon,"登录","登录成功",QMessageBox::Ok,enter);
    78. int err = succbox.exec();
    79. if(err == QMessageBox::Ok)
    80. {
    81. this->close();
    82. com->show();
    83. }
    84. }
    85. else
    86. {
    87. int err = QMessageBox::critical(
    88. this,tr("错误"),
    89. tr("账号密码不匹配,是否重新登录"),
    90. QMessageBox::Yes | QMessageBox::Cancel,
    91. QMessageBox::Cancel
    92. );
    93. if(err == QMessageBox::Cancel)
    94. {
    95. int ques = QMessageBox::question(
    96. this,
    97. tr("问题"),
    98. tr("是否退出"),
    99. QMessageBox::Yes | QMessageBox::No,
    100. QMessageBox::No
    101. );
    102. if(ques == QMessageBox::Yes)
    103. {
    104. this->close();
    105. }
    106. }
    107. this->user_l->clear();
    108. this->passwd_l->clear();
    109. }
    110. });
    111. }
    112. Widget::~Widget()
    113. {
    114. }

  • 相关阅读:
    Docker-Compose
    openGL ES 2.0 3维物体的平移(II)
    在 Windows 用 Chrome System Settings 设置代理
    最短路径之基于贪心算法的迪杰斯特拉dijkstra算法(有图解,含码源)
    【C++笔试强训】第十九天
    HTTPS协议原理
    Java8新特性
    数据库应用:MySQL数据库SQL高级语句与操作
    Win11任务栏太宽了怎么变窄?Win11任务栏宽度调整方法
    如何在《阴阳师》游戏中使用单机单窗口软件工具进行防封技巧?
  • 原文地址:https://blog.csdn.net/weixin_61882921/article/details/132994655