【问题标题】:Application freezing when loosing focus失去焦点时应用程序冻结
【发布时间】:2015-03-17 13:13:02
【问题描述】:

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

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

【问题讨论】:

    标签: c++ qt focus freeze


    【解决方案1】:

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

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

    【讨论】:

    • 是的,这是最好的方法。
    【解决方案2】:

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

    【讨论】:

    • 我应该在我的计算函数中添加这一行吗?或者别的地方?因为直接在我的函数中使用它对冻结不起作用。
    • 它必须在任何阻碍你工作的循环中。最好使用单独的线程进行工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多