題目:
假設要做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.....然后全部鏈接再一起即可單個處理。