在做一些东西的时候,习惯性的引入头文件并且调用,因此出现了很多bug,qt的信号槽机制便可以有效的避免一些问题。
- #ifndef A_H
- #define A_H
-
- #include
- #include
- class A : public QObject
- {
- Q_OBJECT
- public:
- explicit A(QObject *parent = nullptr);
-
- signals:
- void Asignal(void);
- public slots:
- void Aslot(void){
- qDebug()<<"A类的槽函数被调用";
-
- }
-
- };
-
- #endif // A_H
-
- #ifndef B_H
- #define B_H
-
- #include
- #include
- class B : public QObject
- {
- Q_OBJECT
- public:
- explicit B(QObject *parent = nullptr);
-
- signals:
- void Bsignal(void);
- public slots:
- void Bslot(void){
- qDebug()<<"B类的槽函数被调用";
-
- }
-
- };
-
-
- #endif // B_H
-
mainwindow
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include "a.h"
- #include "b.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
-
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
- void MainWindow::on_pushButton_2_clicked()
- {
- qDebug()<<"PushButton(A>B)";
- A *a = new A;
- B *b = new B;
- connect(a,SIGNAL(Asignal()),b,SLOT(Bslot()));
- emit a->Asignal();
-
- }
- void MainWindow::on_pushButton_clicked()
- {
- qDebug()<<"PushButton(B>A)";
- B *b = new B;
- A *a = new A;
- connect(b,SIGNAL(Bsignal()),a,SLOT(Aslot()));
- emit b->Bsignal();
-
-
- }
-
-
当点击PushButton(A>B)时,A类发送信号,调用B类的槽函数;
当点击PushButton(B>A)时,B类发送信号,调用A类的槽函数。