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

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

(二) 今天使用类的静态函数作为回调函数,具体方式如下,
(1) 在头文件中定义类
    class CardDataDispose : public QObject 
    {
        Q_OBJECT
    public:

        static void 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()函数就可以传输数据,不需要开启定时器刷新了。

猜你喜欢

转载自blog.csdn.net/qq_14874791/article/details/106347382
今日推荐