QT中自定义结构体,如何在多线程信号槽间传递
1、自定义结构体MyStruct
定义用来接收信号的槽函数类,两个槽函数,一个是QString类型参数,一个是自定义类型参数

2、定义槽函数的实现,将收到的信息打印出来

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

4、发送信号的函数体

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

6、查看输出界面,可以正常接收到信号,并打印信息

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

2、设置自动删除,这样运行完线程后,会自动回收资源

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

4、在信号槽函数中,也加上线程号的打印

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

6、查看运行结果,可以看到QString类型数据可以跨线程接收,但是自定义类型数据在绑定时就会提示错误

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

2、查看运行结果,没有再提示错误,并且自定义类型数据的信号和槽在同一个线程中运行

1、在绑定信号槽其按,先注册自定义类型


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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:40
阅读量:96
阅读量:160
阅读量:94
阅读量:55