失去焦点时应用程序冻结

Application freezing when loosing focus

我做过一个执行复杂计算的应用程序(它持续几分钟或更长时间),我注意到如果应用程序失去焦点,它就会冻结。如果我一直专注于它,它就会运作良好。 就是我用qt designer做的一个按钮UI。当 QMainWindow 失去焦点时,有 2 个进度条停止。 你听说过这个问题吗?也许它来自 QMainWindow 之一 属性?
感谢您的帮助

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

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

有一个很好的例子说明如何做到这一点 here

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