在多线程传递参数时,遇到了信号槽跨线程参数传输错误问题,总结如下:
在同一个线程中
当信号和槽都在同一个线程中时,值传递参数和引用传递参数有区别:
值传递会复制对象;
引用传递不会复制对象;
不在同一个线程中
当信号和槽不在同一个线程中时,分两种情况。
1、connect时使用AutoConnection(跨线程默认是QueuedConnection):值传递参数和引用传递参数没有区别,都会复制对象;(测试时,打印传递前后的地址不同)
2、connect时使用DirectConnection,测试结果和在同一线程中的结果相同
参考:
https://blog.csdn.net/u010168781/article/details/82108522
https://blog.csdn.net/life_is_too_hard/article/details/52089723