我目前正在使用Qt Jambi作为UI的Java项目。我在与UI线程不同的线程中进行一些计算,我想更新UI以指示进度。
很明显UI更新只能在UI线程上完成,并且由于计算线程不是UI线程,我无法从那里对UI执行更新(尝试因此导致QObject used from outside its own thread
错误)。
那么,如何在UI线程上调用我的updateUI()
方法?
答案 0 :(得分:6)
我自己刚刚找到了解决方案。 QApplication
提供了invokeLater
方法来对UI线程执行操作:
QApplication.invokeLater(new Runnable() {
@Override
public void run() {
updateUI();
}
});
答案 1 :(得分:0)
我以前给过类似的答案,但我找不到它。所以我将重复我之前所说的话。
您需要使用qt的 signal / slot 机制在主线程与工作线程之间进行通信。
我希望这会有所帮助。