Qt 中回调函数的使用方式
.h 文件
class CCallBack;
//全局对象命名空间 namespace GlobalObject { CCallBack *getCallBackObj(); //获取回调函数对象
extern QWidget* gMainWdg; //主窗口全局对象,可以任意地方调用 };
class CCallBack : public QObject { Q_OBJECT; public: static UINT cloudTaskCallbackFun(void *, CB_CALL_TYPE, void *, size_t);
signals: void sigTaskStageChange(CB_CALL_PARAM_TASK_STAGE_CHANGE); };
.cpp
QWidget* GlobalObject::gMainWdg = NULL; CCallBack *GlobalObject::getCallBackObj() { static CCallBack gCallBack; return &gCallBack; }
UINT CCallBack::cloudTaskCallbackFun(void * obj, CB_CALL_TYPE callType, void *param, size_t paramSize) { CCallBack* pCloudTaskCallback = (CCallBack*)obj; switch (callType) { case CB_CALL_TYPE_TASK_STAGE: { //回调函数里处理相应操作 emit pCloudTaskCallback->sigTaskStageChange(taskStageChange); //可以发送信号,通知外面任务处理情况 break; } case CB_CALL_TYPE_PROCESS_MSG: {
break; } default: {
} }
return 0; }
//调用方式
registeCBCall(CCallBack::cloudTaskCallbackFun, GlobalObject::getCallBackObj());
