任務(wù)線程中要搞個桌面截圖,遇到 QWidget:Widgets must be created in the GUI thread
原因:
這個問題是qt其他線程中使用gui的組件造成的
QT只有一個GUI 線程,默認(rèn)就是main函數(shù)中初始化的那個主線程。其他線程是沒有g(shù)ui資源的,不能使用gui相關(guān)的組件
比如網(wǎng)路,文件讀寫,其他非gui功能任務(wù)
解決辦法:信號-槽
從任務(wù)線程發(fā)送信號給gui線程去執(zhí)行
記得用 Qt::BlockingQueuedConnection 鏈接類型,這個可以確保槽函數(shù)在接受信號也就是gui的線程中去完成。
同時可以阻塞等待一個返回值。
--------------------
原文地址:https://soft.pbottle.com/a-13861.html