2011-09-26 125 views
0

我有一個tablewidget需要附加一個子線程的數據。Qt4子線程編輯Gui主線程

我得到這個錯誤在GUI線程之外使用pixmaps是不安全的。在c#中,我使用了Disptacher來告訴mainThread在gui對象中追加數據。

我認爲有一些東西是如何接近這個?我正在使用qt4.7 我已經在父對象中創建了一個插槽,並且在線程對象中創建了一個信號。從子線程發出信號,以便將信號發送到父對象中的插槽。但信號並未發射。當我執行像這樣object-> run(); (即從mainthread)它工作正常..但是當我從線程對象執行它 - >開始();信號不會觸發..我neeed做somework與不mainthread線程..

更新 - 27/09 我只是抓住了問題的根源..信號和插槽都工作但孩子線程空空,是造成這一切的麻煩qnetworkaccessmanger對象..我評論的networkaccess對象並沒有錯誤。我需要的線程調用網絡請求..並更新在GUI的結果..

回答

2

最簡單的方法是使用​​,連接類型爲Qt::QueuedConnection。這會將呼叫排隊等待接收者對象所在線程中的插槽。

+0

也..我有一堆線程不只是一個將要追加data..so我已經在父創建了一個狹槽..和emittted從線程的信號。我試圖將父指針移動到線程類,但是..我不能這樣做.. QObject:無法爲不同的線程中的父級創建子項。 –

+0

哦..我正在改變一些東西...我意識到我不需要在父子引用的孩子.. –

+0

我在父母和信號內線程對象插槽..一個發射信號從子線程發送一個信號到父母的一個插槽..這不起作用。它帶來了同樣的錯誤「在GUI線程之外使用pixmaps是不安全的」。當我做object-> run();不用說object-> start();它在主線程上運行良好。但是object-> start(); lauches錯誤.. –