我有非常簡單的應用程序,它可以在我的github上可以看出:https://github.com/lejmr/qtquicktestQtQuick,QThread的和信號集成
我意識到什麼是當我cppSlot被調用,時間太長完成我的GUI變得不負責任。因此,我決定啓動一個新的線程調用我cppSlot功能,這樣我更新了我的連接部分時:
QThread* thread = new QThread;
analyzeSignal.moveToThread(thread);
QObject::connect(item, SIGNAL(doAnalyzeSignal(QString,QString,QString,QString)),
&analyzeSignal, SLOT(cppSlot(QString,QString,QString,QString)));
thread->start();
但是,如果我這樣做,我得到這個錯誤:
的QObject:不能爲處於不同線程中的父項創建子項。
(Parent是QQuickTextDocumentWithImageResources(0x2ae4de0)
,父母的線程QThread(0x20081e0)
,當前線程是QThread(0x2302730)
,我認爲它是由https://github.com/lejmr/qtquicktest/blob/master/main.cpp#L15哪裏傳播錯誤的指針(到原來的線程造成的,但信號從不同的線程啓動)。
我試過一大堆的東西,但我沒有設法成功。
的目標是調用程序的輸出寫入到GUI的文本字段,而不是把它安慰的。