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());

经验分享 程序员 微信小程序 职场和发展