失去焦点时应用程序冻结
Application freezing when loosing focus
我做过一个执行复杂计算的应用程序(它持续几分钟或更长时间),我注意到如果应用程序失去焦点,它就会冻结。如果我一直专注于它,它就会运作良好。
就是我用qt designer做的一个按钮UI。当 QMainWindow 失去焦点时,有 2 个进度条停止。
你听说过这个问题吗?也许它来自 QMainWindow 之一 属性?
感谢您的帮助
编辑:即使 UI 冻结,计算仍然是 运行。但这对用户来说很无聊。
听起来您是在主 (GUI) 线程上进行计算。创建一个单独的工作对象来处理计算并将其移至新线程。
有一个很好的例子说明如何做到这一点 here。
您需要在计算期间调用 QCoreApplication::processEvents()
,以防止冻结。您也可以使用 QThread
作为工作线程,但这是一个更复杂的解决方案。
我做过一个执行复杂计算的应用程序(它持续几分钟或更长时间),我注意到如果应用程序失去焦点,它就会冻结。如果我一直专注于它,它就会运作良好。
就是我用qt designer做的一个按钮UI。当 QMainWindow 失去焦点时,有 2 个进度条停止。
你听说过这个问题吗?也许它来自 QMainWindow 之一 属性?
感谢您的帮助
编辑:即使 UI 冻结,计算仍然是 运行。但这对用户来说很无聊。
听起来您是在主 (GUI) 线程上进行计算。创建一个单独的工作对象来处理计算并将其移至新线程。
有一个很好的例子说明如何做到这一点 here。
您需要在计算期间调用 QCoreApplication::processEvents()
,以防止冻结。您也可以使用 QThread
作为工作线程,但这是一个更复杂的解决方案。