-1

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

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

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

4

2 回答 2

6

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

QApplication.invokeLater(new Runnable() {
    @Override
    public void run() {
        updateUI();
    }
});
于 2011-06-29T08:57:41.933 回答
0

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

您需要使用qt 的信号/槽机制来使主线程与工作线程之间发生通信。

查看Mandelbrot 示例

我希望这有帮助。

于 2011-06-29T08:42:22.680 回答