使用第三方库,库提供接口,接口使用了自定义回调函数。
问题:
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); //-第二步---第三方库调用此回调函数----
}