在Qt中是否有办法禁止计算机进入睡眠状态?

Yel*_*low 6 c++ macos qt qt5

我正在编写一个Qt应用程序来执行一些繁重的计算,但是在Mac上(可能也在Windows上但我目前无法检查这个),一旦计算机进入休眠模式,执行就会停止.

即使屏幕转到屏幕保护程序或空白,我想要一种继续执行的方法.显然,你可以要求用户改变他/她的能量设置,但这远非理想的解决方案.有没有正确的方法呢?

Rei*_*ica 5

这有两个方面:

  1. 强制休眠如果用户想让系统休眠,而您阻止它,您的用户很可能会诅咒您。强制睡眠也是能量和热量管理的一部分,对于防止数据丢失、避免硬件损坏和减轻可能的火灾风险至关重要。

    当我合上笔记本电脑的盖子时,最好进入睡眠状态,如果我发现一个试图绕过它的应用程序,它最好是免费的,否则我会打电话给我的信用卡公司要求退款。就这么简单,我希望很容易理解为什么会这样。

  2. Idle Sleep你要做的并不是阻止系统进入睡眠状态,而是仅仅禁用空闲睡眠。

此答案涵盖了禁用空闲睡眠。


Yel*_*low 5

在对 Qt 5.2 API 进行彻底搜索后,似乎 Qt 不提供任何更改能量设置的功能(因此不适用于 Mac 或任何其他操作系统)。我也没有发现任何迹象表明它在他们的路线图上。

可以在此处找到使用 Apple 的 Objective-C API 的 Mac OSX 的可能解决方案(谢谢,@Kuba)。

在 Windows 上,可以使用 SetThreadExecutionState 函数处理电源设置(请参阅此问题,C#)。