QT Jambi:从其他线程更新UI

时间:2011-06-29 08:32:08

标签: java multithreading qt qt-jambi

我目前正在使用Qt Jambi作为UI的Java项目。我在与UI线程不同的线程中进行一些计算,我想更新UI以指示进度。

很明显UI更新只能在UI线程上完成,并且由于计算线程不是UI线程,我无法从那里对UI执行更新(尝试因此导致QObject used from outside its own thread错误)。

那么,如何在UI线程上调用我的updateUI()方法?

2 个答案:

答案 0 :(得分:6)

我自己刚刚找到了解决方案。 QApplication提供了invokeLater方法来对UI线程执行操作:

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

答案 1 :(得分:0)

我以前给过类似的答案,但我找不到它。所以我将重复我之前所说的话。

您需要使用qt的 signal / slot 机制在主线程与工作线程之间进行通信。

结帐Mandelbrot example

我希望这会有所帮助。