QT中自定义结构体,如何在多线程信号槽间传递
本文以示例的方式讲解,在qt中,自定义的结构体如何在多线程的信号槽之间传递
工具/原料
qt
vs
单线程
1、自定义结构体MyStruct定义用来接收信号的槽函数类,两个槽函数,一个是QString类型参数,一个是自定义类型参数

3、定义发送信号的类,对应的有两个信号,一个是QString类型参数,一个是自定义类型参数

5、绑定信号槽,然后分别发送QString类型的信号和自定义信号

多线程
1、修改槽函数所在类,让它从QRunnable继承,并实现run函数。为了在run函数中绑定信号槽,将信号所在类在构造函数中传入

3、在run函数中,绑定信号槽,并发送不同参数的信号为了区分在哪个线程执行,这里打印了线程号

5、在main函数中通过QThreadPool来启动线程

跨线程自定义类型解决方案一
1、自定义类型在跨线程信号槽传递时,会提示错误,但是在同一线程中传递就不会出错通过connet时,指定连接类型为直连,让信号和槽在同一个线程中执行

跨线程自定义类型解决方案二
1、在绑定信号槽其按,先注册自定义类型

2、查看运行结果,参数正常传递,并且信号和槽在不同的线程中处理
