我是Qt Programming的新手,但我对C ++有基础知识。
我想在处理GUI时更新我的GUI,例如:
while (....)
{
do some calculation...
if (condition fulfill)
change the color of label.
}
然而,我意识到我没有得到我想要的结果(在处理时更新GUI)。 GUI只会在while循环后更新。 为什么会这样?有人可以帮忙吗?
此外,由于处理过快而无法看到动画,我希望“减慢”颜色变化。有什么想法吗?
非常感谢!
澄清: 实际上我希望更新GUI 而我正在处理...意思是,如果我有100次迭代,在每次迭代之后,我希望立即更新GUI
答案 0 :(得分:2)
使用QTimer。这将允许您控制动画的速度并保持UI响应。
答案 1 :(得分:1)
您必须将处理代码放到另一个线程并更新gui,因为这样的GUI将等待您的进程结束并在结束后刷新
在这里阅读更多:
http://www.qtcentre.org/threads/41545-How-to-refresh-GUI-while-heavy-processing-is-ongoing
http://www.qtcentre.org/threads/32416-Update-GUI-from-another-thread
Forcing the Qt GUI to update
答案 2 :(得分:1)
您不一定需要一个帖子 调用QApplication::processEvents()将处理待处理事件,包括您在处理过程中可能造成的任何重绘。
答案 3 :(得分:0)
如果您希望为颜色设置动画以指示系统当前正在运行,您可能希望使用QApplication :: setOverrideCursor来显示waitCursor或QProgressDialog。