C++ QT多线程+信号槽
一、场景
1)子线程使用movetothead
触发后执行一次耗时任务
2)信号槽
使用自定义信号和槽函数,进行跨线程数据传递。
二、需注意的点 (重要)
1)自定义信号槽的参数如果是较复杂的map或vector,只能使用指针,使用拷贝和引用都无法进行信号传递;
2)跨线程发送数据使用指针,最好是在发信号这一方临时new出来,在槽中使用完毕进行销毁。
3)子线程通过信号往外发vector或map等类型数据,建议new一个新的指针(参考第2条),不要使用临时变量,也不要使用类成员变量。临时变量容易导致数据丢失,类成员变量容易导致数据重复塞入(即使在使用前做好了clear操作也会出现此问题)。