QT两个类之间使用信号槽

在做一些东西的时候,习惯性的引入头文件并且调用,因此出现了很多bug,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类的槽函数。

相关推荐
吴声子夜歌2 小时前
ApacheCommons——commons-pool2(高性能通用对象池框架)
java·开发语言·apache
Y3815326627 小时前
MySQL 慢查询排查实战:EXPLAIN 看懂 type 与 Extra,一个字段定位性能问题
数据库·mysql
kruptos8 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌8 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
Logintern098 小时前
PostgreSQL 的 ORDER BY 多列排序
数据库·postgresql
今天AI了吗9 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
benchmark_cc9 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库9 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H9 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
数据库小学妹9 小时前
为什么MySQL索引用B+树?从存储底层讲透原理
数据库·mysql·b+树·索引优化·磁盘io·数据库原理