題目:
假設要做2個類,一個類的值提供一個函數SetValue,當這個值發生變化時,假設>10就觸發告警調用B的函數;
-------------------------------------------
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);
};
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);
}
};
#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();
}
如果對告警的處理有多個處理函數,多個處理類,那么可以做多個B,cb1, cb2,cb3.....然后全部鏈接再一起即可單個處理。
