(1)数据传递方法:使用信号和槽;
对于自定义数据类型,需要 qRegisterMetaType<Mat>("Mat")注册,注册对象所有相关的自定义数据类型;
注:信号槽的参数必须是注册的MetaType,所以当你使用自定义的类型或者 没有注册的类型,都要在connect连接语句前调用qRegisterMetaType()进行注册,因为Qt需要保存你的参数。
详见:https://blog.csdn.net/wangzhiqian7hao/article/details/83445560
(2)信号与槽:不能使用Lambda 表达式去处理,使用基本的链接方式,同时将链接方式设置为:BlockingQueuedConnection或QueuedConnection。
连接类型:
1. Qt::AutoConnection:自动(默认)。信号发射对象如果和槽的执行对象在同一个线程,将是直连方式,否则就是队列方式。
2. Qt::DirectConnection:直连。信号一旦发射,槽立即执行,并且槽是在信号发射的线程中执行的。(同一线程是同步执行)
3. Qt::QueuedConnection:队列。信号发射后当事件循环返回到接收线程时槽函数就执行了,也就是说这种连接方式不是立即触发槽函数的,而是要排队等的,并且是在槽函数的线程中执行。(不同线程是异步执行)
4. Qt::BlockingQueued