Qt 静态回调函数访问类成员变量解决办法
总结起来就是: 定义一个静态指针s_this,构造函数中将其指向this指针.
完整项目路径如下:
https://github.com/lesliefish/Qt/tree/master/Core/StaticCallbackTest
环境:vs2015+Qt5.9.6
代码示例:
头文件:
#pragma once
#include <QObject>
#if defined _WIN32 || defined _WIN64
#define CALLBACK __stdcall
#elif defined __linux__ || defined __APPLE__
#define CALLBACK
#endif
// 定义回调函数类型
typedef void (CALLBACK *CALLBACK_FUNC)(const char* str, void *pUserData);
// 回调传入接口
void setCallBackFunc(CALLBACK_FUNC pFuncCallBack, void* data = nullptr);
class StaticCallBackTest : public QObject
{
Q_OBJECT
public:
StaticCallBackTest(QObject *parent = Q_NULLPTR);
public:
// 静态类指针
static StaticCallBackTest* s_this;
// 静态函数 供doSomething()调用
static void CALLBACK startFunc(const char *str, void *p