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