我做了一个复杂计算的应用程序(它持续几分钟或更长时间)并且我注意到如果应用程序失去焦点,它会冻结。如果我继续关注它,它就能很好地运作。
它只是一个带有一个按钮的用户界面,我已经用qt设计师完成了。当QMainWindow失去焦点时,有2个progressBars停止。
你听说过这个问题吗?也许它来自QMainWindow的一个属性?
谢谢你的帮助
编辑:即使UI冻结,计算仍在运行。但它对用户来说很无聊。
答案 0 :(得分:2)
听起来你正在对主(GUI)线程进行计算。创建一个单独的工作对象来处理计算并将其移动到新线程。
有一个很好的例子,说明如何执行此操作here。
答案 1 :(得分:0)
您需要在计算过程中调用QCoreApplication::processEvents()
以防止冻结。您也可以使用QThread
作为工作线程,但它是一个更复杂的解决方案。