QT-信号与槽-两个类之间使用信号与槽
A类:
#ifndef A_H #define A_H #include <QObject> #include <QDebug> 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
B类:
#ifndef B_H #define B_H #include <QObject> #include <QDebug> 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类的槽函数。
上一篇:
IDEA上Java项目控制台中文乱码