Qt界面设计

怎甘沉沦 提交于 2020-01-18 22:18:08

Qt信号与槽函数可以实现任意两个Qt类的对象之间进行通信,比如登录类QtLoginWin 与界面上的登录按钮loginBt

当点击按钮的时候会发送clicked信号,这样就可以与QtLoginWin的槽函数关联进行通信如下图:

把控件的名字分别修改为

用户输入:userEdit,   密码输入:passEdit, 注册:registerBt, 登录:loginBt (修改方法如下, 选择对应的按钮修改属性objectName)

修改qtloginwin.h

  1. #ifndef QTLOGINWIN_H
  2. #define QTLOGINWIN_H
  3. #include <QMainWindow>
  4. namespace Ui {
  5. class QtLoginWin;
  6. }
  7. class QtLoginWin : public QMainWindow
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit QtLoginWin(QWidget *parent = 0);
  12. ~QtLoginWin();
  13. private slots://槽函数声明--在.cpp中必须实现
  14. void login_fun();//登录槽函数声明
  15. void register_fun();//注册槽函数声明
  16. void signals_test();//用来测试自定义信号使用
  17. signals://信号声明--不需实现,后期直接通过emit 发送就可以了
  18. void mysignals();
  19. private:
  20. Ui::QtLoginWin *ui;
  21. };
  22. #endif // QTLOGINWIN_H

修改qtloginwin.cpp文件

  1. #include "qtloginwin.h"
  2. #include "ui_qtloginwin.h"
  3. #include <QDebug>
  4. QtLoginWin::QtLoginWin(QWidget *parent) :
  5. QMainWindow(parent),
  6. ui(new Ui::QtLoginWin)
  7. {
  8. ui->setupUi(this);
  9. //按钮信号与本类的槽函数关联
  10. connect(ui->loginBt,SIGNAL(clicked(bool)), this, SLOT(login_fun()));
  11. connect(ui->registerBt,SIGNAL(clicked(bool)),this, SLOT(register_fun()));
  12. //本类对象自己发送信号与本类对象关联
  13. connect(this, SIGNAL(mysignals()),this, SLOT(signals_test()));
  14. }
  15. QtLoginWin::~QtLoginWin()
  16. {
  17. delete ui;
  18. }
  19. void QtLoginWin::login_fun()
  20. {
  21. qDebug()<<"login";
  22. //发送信号
  23. emit mysignals();
  24. }
  25. void QtLoginWin::register_fun()
  26. {
  27. qDebug()<<"register";
  28. //发送信号
  29. emit mysignals();
  30. }
  31. void QtLoginWin::signals_test()
  32. {
  33. qDebug()<<"signal test";
  34. }

当点击按钮的时候---login_fun,或者register_fun会调用, 在这两个槽函数中发送信号, 所以signals_test函数也被调用了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!