Qt开发经常碰到的场景:在一个类中发送自定义信号,在另一个类中接收该信号并处理(类似于win32 MFC中的PostMessage)
1、a.h
#pragma once
#include <QOBJECT>
class CA:public QObject
{
Q_OBJECT
public:
CA() {}
~CA() {}
void DoSetValue(int c)
{
//qDebug() << "class a do set value and it will emit class to do b\r\n";
printf("class a do set value and it will emit class to do b\r\n");
printf("before emit onvaluechange\r\n");
emit __OnAlarm(c);
printf("after emit onvaluechange\r\n");
}
signals:
void __OnAlarm(int c);
};
2、b.h
#pragma once
#include <qobject.h>
class CB:public QObject
{
Q_OBJECT
public:
CB() {}
~CB() {}
public slots:
void OnAlarm(int c)
{
printf("on value change on class b %d \r\n", c);
}
};
3、main.cpp
#include <QtCore/QCoreApplication>
#include "CA.h"
#include "CB.h"
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
CA a;
CB b;
QObject::connect(&a, SIGNAL(__OnAlarm(int)), &b, SLOT(OnAlarm(int)));
a.DoSetValue(100);
return app.exec();
}