任务线程中要搞个桌面截图,遇到 QWidget:Widgets must be created in the GUI thread
原因:
这个问题是qt其他线程中使用gui的组件造成的
QT只有一个GUI 线程,默认就是main函数中初始化的那个主线程。其他线程是没有gui资源的,不能使用gui相关的组件
比如网路,文件读写,其他非gui功能任务
解决办法:信号-槽
从任务线程发送信号给gui线程去执行
记得用 Qt::BlockingQueuedConnection 链接类型,这个可以确保槽函数在接受信号也就是gui的线程中去完成。
同时可以阻塞等待一个返回值。