当前位置:   article > 正文

QT两个类之间使用信号槽

QT两个类之间使用信号槽

        在做一些东西的时候,习惯性的引入头文件并且调用,因此出现了很多bug,qt的信号槽机制便可以有效的避免一些问题。

        A类

  1. #ifndef A_H
  2. #define A_H
  3. #include <QObject>
  4. #include <QDebug>
  5. class A : public QObject
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit A(QObject *parent = nullptr);
  10. signals:
  11. void Asignal(void);
  12. public slots:
  13. void Aslot(void){
  14. qDebug()<<"A类的槽函数被调用";
  15. }
  16. };
  17. #endif // A_H

        B类

  1. #ifndef B_H
  2. #define B_H
  3. #include <QObject>
  4. #include <QDebug>
  5. class B : public QObject
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit B(QObject *parent = nullptr);
  10. signals:
  11. void Bsignal(void);
  12. public slots:
  13. void Bslot(void){
  14. qDebug()<<"B类的槽函数被调用";
  15. }
  16. };
  17. #endif // B_H

        mainwindow 

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include "a.h"
  4. #include "b.h"
  5. MainWindow::MainWindow(QWidget *parent) :
  6. QMainWindow(parent),
  7. ui(new Ui::MainWindow)
  8. {
  9. ui->setupUi(this);
  10. }
  11. MainWindow::~MainWindow()
  12. {
  13. delete ui;
  14. }
  15. void MainWindow::on_pushButton_2_clicked()
  16. {
  17. qDebug()<<"PushButton(A>B)";
  18. A *a = new A;
  19. B *b = new B;
  20. connect(a,SIGNAL(Asignal()),b,SLOT(Bslot()));
  21. emit a->Asignal();
  22. }
  23. void MainWindow::on_pushButton_clicked()
  24. {
  25. qDebug()<<"PushButton(B>A)";
  26. B *b = new B;
  27. A *a = new A;
  28. connect(b,SIGNAL(Bsignal()),a,SLOT(Aslot()));
  29. emit b->Bsignal();
  30. }

当点击PushButton(A>B)时,A类发送信号,调用B类的槽函数;

当点击PushButton(B>A)时,B类发送信号,调用A类的槽函数。

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

闽ICP备14008679号