当前位置:网站首页>QT establish signal slots between different classes and transfer parameters
QT establish signal slots between different classes and transfer parameters
2022-07-08 00:20:00 【Miaowei】
Qt List of articles
List of articles
Preface
Recently encountered this situation : Suppose there is 3 Classes :A,B,C
A Classes and B Passing data between classes , and C Class is responsible for controlling A Classes and B class , let me put it another way ,C Class management A Classes and B class .
Qt Establish signal slots between different classes , And pass the parameters
One .A class :TestA
1. Header file and implementation file
#ifndef TESTA_H
#define TESTA_H
#include <QObject>
class TestA : public QObject
{
Q_OBJECT
public:
explicit TestA(QObject *parent = nullptr);
void emitDataFromTestA();
signals:
void sendDataFromTestA(const char* data);
public slots:
void recvDataAtTestA(const char* data);
};
#endif // TESTA_H
```cpp
#include "TestA.h"
#include <QDebug>
TestA::TestA(QObject *parent) : QObject(parent)
{
}
void TestA::emitDataFromTestA()
{
const char* name = "Data from testA";
emit sendDataFromTestA(name);
}
void TestA::recvDataAtTestA(const char *data)
{
// QString print = data;
// qDebug() << print.toLatin1();
qDebug() << "TestA class recive data:" << data;
}
# Two 、B class :TestB
```cpp
#ifndef TESTB_H
#define TESTB_H
#include <QObject>
class TestB : public QObject
{
Q_OBJECT
public:
explicit TestB(QObject *parent = nullptr);
void emitDataFromTestB();
signals:
void sendDataFromTestB(const char* data);
public slots:
void recvDataAtTestB(const char* data);
};
#endif // TESTB_H
#include "TestB.h"
#include <QDebug>
TestB::TestB(QObject *parent) : QObject(parent)
{
}
void TestB::emitDataFromTestB()
{
const char* name = "Data from testB";
emit sendDataFromTestB(name);
}
void TestB::recvDataAtTestB(const char *data)
{
qDebug() << "TestB class recive data:" << data;
}
3、 ... and C class : control A and B Class
#ifndef CONTROL_H
#define CONTROL_H
#include <QObject>
#include "TestA.h"
#include "TestB.h"
class Control : public QObject
{
Q_OBJECT
public:
explicit Control(QObject *parent = nullptr);
~Control();
public:
TestA* m_pTestA;
TestB* m_pTestB;
void controlSendData();
signals:
};
#endif // CONTROL_H
#include "Control.h"
Control::Control(QObject *parent) : QObject(parent)
{
m_pTestA = new TestA;
m_pTestB = new TestB;
QObject::connect(m_pTestA, &TestA::sendDataFromTestA, m_pTestB, &TestB::recvDataAtTestB);
QObject::connect(m_pTestB, &TestB::sendDataFromTestB, m_pTestA, &TestA::recvDataAtTestA);
}
Control::~Control()
{
if(m_pTestA)
{
delete m_pTestA;
m_pTestA = nullptr;
}
if(m_pTestB)
{
delete m_pTestB;
m_pTestB = nullptr;
}
}
void Control::controlSendData()
{
m_pTestA->emitDataFromTestA();
m_pTestB->emitDataFromTestB();
}
Four Calling class
#include "MainWindow.h"
#include "TestA.h"
#include "TestB.h"
#include "Control.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// TestA testA;
// TestB testB;
// a.connect(&testA, &TestA::sendDataFromTestA, &testB, &TestB::recvDataAtTestB);
// testA.emitDataFromTestA();
// a.connect(&testB, &TestB::sendDataFromTestB, &testA, &TestA::recvDataAtTestA);
// testB.emitDataFromTestB();
Control control;
control.controlSendData();
MainWindow w;
w.show();
return a.exec();
}
function
Source download
边栏推荐
- [question de programmation] [scratch niveau 2] oiseaux volants en décembre 2019
- Anaconda+pycharm+pyqt5 configuration problem: pyuic5 cannot be found exe
- Relevant methods of sorting arrays in JS (if you want to understand arrays, it's enough to read this article)
- 全自动化处理每月缺卡数据,输出缺卡人员信息
- Reptile practice (VIII): reptile expression pack
- [the most detailed in history] statistical description of overdue days in credit
- Robomaster visual tutorial (11) summary
- [programming problem] [scratch Level 2] December 2019 flying birds
- Go learning notes (2) basic types and statements (1)
- How does the markdown editor of CSDN input mathematical formulas--- Latex syntax summary
猜你喜欢
Automated testing: robot framework is a practical skill that 90% of people want to know
【史上最详细】信贷中逾期天数统计说明
【編程題】【Scratch二級】2019.12 飛翔的小鳥
赞!idea 如何单窗口打开多个项目?
Trust orbtk development issues 2022
The underlying principles and templates of new and delete
【编程题】【Scratch二级】2019.03 绘制方形螺旋
玩转Sonar
爬虫实战(八):爬表情包
每日刷题记录 (十六)
随机推荐
paddle一个由三个卷积层组成的网络完成cifar10数据集的图像分类任务
Development of a horse tourism website (realization of login, registration and exit function)
服务器防御DDOS的方法,杭州高防IP段103.219.39.x
Introduction to paddle - using lenet to realize image classification method I in MNIST
Automated testing: robot framework is a practical skill that 90% of people want to know
Cmake learning notes (1) compile single source programs with cmake
DNS 系列(一):为什么更新了 DNS 记录不生效?
Is 35 really a career crisis? No, my skills are accumulating, and the more I eat, the better
Robomaster visual tutorial (10) target prediction
RPA cloud computer, let RPA out of the box with unlimited computing power?
Notice on organizing the second round of the Southwest Division (Sichuan) of the 2021-2022 National Youth electronic information intelligent innovation competition
Installation and configuration of sublime Text3
【编程题】【Scratch二级】2019.03 垃圾分类
C language 005: common examples
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
【测试面试题】页面很卡的原因分析及解决方案
Introduction knowledge system of Web front-end engineers
22年秋招心得
Single machine high concurrency model design
LinkedBlockingQueue源码分析-新增和删除