当前位置:网站首页>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
边栏推荐
- 深潜Kotlin协程(二十三 完结篇):SharedFlow 和 StateFlow
- 搭建ADG过程中复制报错 RMAN-03009 ORA-03113
- 22年秋招心得
- [basis of recommendation system] sampling and construction of positive and negative samples
- Trust orbtk development issues 2022
- Reptile practice (VIII): reptile expression pack
- [programming problem] [scratch Level 2] December 2019 flying birds
- Les mots ont été écrits, la fonction est vraiment puissante!
- 【编程题】【Scratch二级】2019.12 绘制十个正方形
- paddle入门-使用LeNet在MNIST实现图像分类方法二
猜你喜欢
Smart regulation enters the market, where will meituan and other Internet service platforms go
What if the testing process is not perfect and the development is not active?
单机高并发模型设计
How to insert highlighted code blocks in WPS and word
ROS从入门到精通(九) 可视化仿真初体验之TurtleBot3
Trust orbtk development issues 2022
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
[programming questions] [scratch Level 2] March 2019 garbage classification
2022-07-07:原本数组中都是大于0、小于等于k的数字,是一个单调不减的数组, 其中可能有相等的数字,总体趋势是递增的。 但是其中有些位置的数被替换成了0,我们需要求出所有的把0替换的方案数量:
他们齐聚 2022 ECUG Con,只为「中国技术力量」
随机推荐
Is 35 really a career crisis? No, my skills are accumulating, and the more I eat, the better
Solution to prompt configure: error: curses library not found when configuring and installing crosstool ng tool
Zhou Hongqi, 52 ans, est - il encore jeune?
Reptile practice (VIII): reptile expression pack
智慧监管入场,美团等互联网服务平台何去何从
52歲的周鴻禕,還年輕嗎?
Seven years' experience of a test engineer -- to you who walk alone all the way (don't give up)
How does starfish OS enable the value of SFO in the fourth phase of SFO destruction?
How to learn a new technology (programming language)
Anaconda+pycharm+pyqt5 configuration problem: pyuic5 cannot be found exe
What if the testing process is not perfect and the development is not active?
How to add automatic sorting titles in typora software?
Linkedblockingqueue source code analysis - add and delete
Robomaster visual tutorial (0) Introduction
测试流程不完善,又遇到不积极的开发怎么办?
ROS from entry to mastery (IX) initial experience of visual simulation: turtlebot3
Single machine high concurrency model design
Coindesk comments on the decentralization process of the wave field: let people see the future of the Internet
哪个券商公司开户佣金低又安全,又靠谱
The result of innovation in professional courses such as robotics (Automation)