2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > QT 类静态函数作为回调函数

QT 类静态函数作为回调函数

时间:2021-10-09 05:07:15

相关推荐

QT 类静态函数作为回调函数

(一) C++回调函数、静态函数、成员函数踩过的坑。

明确一点即回调函数需要是静态函数。原因:

普通的C++成员函数都隐含了一个this指针作为参数,这样使得回调函数的参数和成员函数参数个数不匹配。

以前在使用回调函数的数据都是定义一个全局变量,把回调函数的返回结果给这个全局变量,然后在定时去刷新这个全局变量,这样虽然可以实现功能,但是方法不是很好 。

(二) 今天使用类的静态函数作为回调函数,具体方式如下,

(1) 在头文件中定义类

class CardDataDispose : public QObject

{

Q_OBJECT

public:

staticvoid callback(int device, int msg, int param1, void *param2);//回调函数

void data(QString cardID, QString cardAnswer);

};

(2) 在引用回调类的源文件中设置回调函数。

TB_SetCallbackAddr(CardDataDispose::callback);

(3) CardDataDispose回调函数的原型

void CardDataDispose::callback(int device, int msg, int param1, void *param2)

{

CardDataDispose *a;

a->data("1" , "2");

}

void CardDataDispose::data(QString cardID, QString cardAnswer)

{

引用回调函数的类

UBBoardController *b;

b->receiveCardData(cardID, cardAnswer);

}

(三) 通过以上把回调函数封装成一个类,在收到数据后直接调用receiveCardData()函数就可以传输数据,不需要开启定时器刷新了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。