2011-06-29 407 views
-2

我目前正在使用Qt Jambi爲UI開發一個Java項目。我正在做一些與UI線程不同的線程計算,我想更新UI來指示進度。QT Jambi:從其他線程更新UI

很明顯,UI更新只能在UI線程上完成,並且由於計算線程不是UI線程,所以我無法從那裏執行UI更新(嘗試導致出現QObject used from outside its own thread錯誤)。

那麼,如何在UI線程上調用我的updateUI()方法?

+0

UI線程是一些有關設置外觀和感覺,更新自定義組件(S)... – mKorbel

回答

5

我剛剛找到了解決方案。 QApplication提供invokeLater方法在UI線程上執行操作:

QApplication.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
     updateUI(); 
    } 
}); 
0

我已經給出了類似的答案,但我找不到它。所以我會重複我之前說過的話。

您需要使用信號/插槽 qt機制使主線程與工作線程之間進行通信。

結帳的Mandelbrot example

我希望這會有所幫助。