全局函数如何和界面通讯?

有个项目用的Qt,调用了第三方库,但是库里只有一个回调函数接口

typedef BOOL (__stdcall *on_connect)(RSECSH server_h, RSECSH session_h, unsigned short device_id);

回调函数需要在外部实现.我在类中实现这个函数,却发现没法将成员函数指针传进去,在公共文件中用全局函数实现,这样是可以的,但是回调函数触发的时候怎么通知其他类去处理?

#test.h

class test

{

public:

test();

static bool call_back(RSECSH server_h, RSECSH session_h, unsigned short device_id);


};

#test.cpp

static test *pTest

test::test()

{

pTest = this;

}

 

bool  test::call_back(RSECSH server_h, RSECSH session_h, unsigned short device_id)

{

 pTest->

}

 

定义一个全局静态的类指针

在构造函数的时候=this

回调函数调用这个全局的类指针就可以了

 

这个要看第三方库的调用函数中参数是否有额外的参数传入

没有的话,定义全局变量吧,多线程可能会有问题

QT采用的是信号-槽机制进行消息传递的,安全的方法是自定义信号,并在需要响应的类中定义信号接收与处理函数。关于信号-槽的机制,网上有很多,如QT 信号和槽的使用笔记 - 程序员大本营  https://www.pianshen.com/article/5623390488/,也可以自已去查询。

使用设置个bool全局变量传递。    设置例子:头文件xxx.h 上面添加 extern bool isok;        xxx.cpp文件上添加  bool isok; 

设置完毕后所有包含过xxx.h的文件中都可以使用 isok;如图 我想把图1里 camera.cpp 里回调函数里面的 q_Imagelist1传递给图4Mainwindow的函数中,就只需要

在camera.cpp 添加 QQueue<QImage> q_Imagelist1;

在camera.h 添加extren QQueue<QImage> q_Imagelist1;

这样QQueue<QImage> 类型的q_Imagelist1就传递出去了

 

 

 

 

 

 

补充一点,mainwind.cpp需要包含“camera.h”