2011-06-29 64 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

我希望这会有所帮助。