失去焦点时应用冻结

时间:2015-03-17 13:13:02

标签: c++ qt focus freeze

我做了一个复杂计算的应用程序(它持续几分钟或更长时间)并且我注意到如果应用程序失去焦点,它会冻结。如果我继续关注它,它就能很好地运作。 它只是一个带有一个按钮的用户界面,我已经用qt设计师完成了。当QMainWindow失去焦点时,有2个progressBars停止。 你听说过这个问题吗?也许它来自QMainWindow的一个属性?
谢谢你的帮助

编辑:即使UI冻结,计算仍在运行。但它对用户来说很无聊。

2 个答案:

答案 0 :(得分:2)

听起来你正在对主(GUI)线程进行计算。创建一个单独的工作对象来处理计算并将其移动到新线程。

有一个很好的例子,说明如何执行此操作here

答案 1 :(得分:0)

您需要在计算过程中调用QCoreApplication::processEvents()以防止冻结。您也可以使用QThread作为工作线程,但它是一个更复杂的解决方案。