使用第三方库,库提供接口,接口使用了自定义回调函数。
问题:
1、回调函数频繁获得内容,如何获得内容及时处理。
2、回调函数不能使用类成员,不能发信号。
解决方法:
.h class Widget : public QWidget { Q_OBJECT public: static Widget* s_this; //--------静态指针-------------------------- static void CALLBACK MessageCallback(LONG lCommand,char* palarminfo,DWORD dwbuflen,void* puser); //-------回调函数----------------------------- signals: void getNewMessag(QString); //-------信号----------------------------- }; .cpp Widget* Widget::s_this = nullptr; void Widget::MessageCallback(LONG lCommand,char* palarminfo,DWORD dwbuflen,void* puser) { emit s_this->getNewMessag("aaa"); //--第三步---在静态成员回调函数里发信号--------- } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { s_this=this; //--第一步---初始化时,把自己赋值给指针----------------- func(MessageCallback,NULL); //-第二步---第三方库调用此回调函数---- }