如何在处理时更改GUI

时间:2011-08-07 14:59:28

标签: c++ qt user-interface

我是Qt Programming的新手,但我对C ++有基础知识。

我想在处理GUI时更新我的​​GUI,例如:

while (....)
{

        do some calculation...

        if (condition fulfill)

            change the color of label.
}

然而,我意识到我没有得到我想要的结果(在处理时更新GUI)。 GUI只会在while循环后更新。 为什么会这样?有人可以帮忙吗?

此外,由于处理过快而无法看到动画,我希望“减慢”颜色变化。有什么想法吗?

非常感谢!

澄清: 实际上我希望更新GUI 我正在处理...意思是,如果我有100次迭代,在每次迭代之后,我希望立即更新GUI

4 个答案:

答案 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。