我有一个在向导结束时运行的进度对话框。必须在UI线程上完成需要花费大量时间的操作。是否有一些方法可以在操作过程中更新进度条?
谢谢,
答案 0 :(得分:0)
您可以尝试dlg.paintAll(dlg.getGraphics());
,但手动刷新的问题是,当您调用时,对话框仅在给定的intervalls下刷新。因此,当用户点击前面的某个其他窗口并想要稍后检查它进展到多远时,他将不会在下一次刷新发生之前看到它。
为什么不能在线程中执行代码?您将ProgressDialog创建为模态,然后启动工作线程,并在执行它之后,将进度设置为可见。你可以在线程中更新它,也可以在线程中关闭它。主线程将阻塞,直到工作人员完成并保持可见。
答案 1 :(得分:0)
fork
参数以运行至false
Display::readAndDispatch
。你确定这应该在UI线程中完成吗?在大多数情况下,在非UI线程中使用Display::asyncExec
或Display::syncExec