如果用户没有响应,qt 中是不是有任何 api 或方法可以在特定时间后将设备置于睡眠模式?
Posted
技术标签:
【中文标题】如果用户没有响应,qt 中是不是有任何 api 或方法可以在特定时间后将设备置于睡眠模式?【英文标题】:Is there any api or method in qt to put the device in sleep mode after a specific time if no response is coming from user?如果用户没有响应,qt 中是否有任何 api 或方法可以在特定时间后将设备置于睡眠模式? 【发布时间】:2021-10-11 12:34:25 【问题描述】:我正在为 linux 创建一个应用程序,如果用户端没有响应或事件发生,我希望在 5 分钟、10 分钟等特定时间后将设备屏幕置于睡眠模式。
【问题讨论】:
【参考方案1】:这里稍微补充一下其他答案。
您可以在应用程序的顶层安装eventFilter 以监控发生的任何输入事件(无论是鼠标单击或移动事件、键盘事件等)。在与eventFilter
相同的范围内,您可以使用一些QTimer
并将间隔设置为您的睡眠超时持续时间,每次输入发生时您都会重新启动。例如,QTimer
的timeout
信号可以连接到一个插槽,您可以通过QProcess
调用sh
使系统进入睡眠状态。
【讨论】:
我使用了事件过滤器,但无法将设备屏幕置于睡眠模式。 正如其他回答者提到的那样,实际上没有任何特定于 Qt 的选项可以让屏幕进入睡眠状态。您需要使用一些特定于系统的命令来执行此操作,他们为此提供了一个有用的链接。结合我们的答案,您可以简单地执行QProcess::execute("sh", QStringList() << "echo mem > /sys/power/state");
之类的操作【参考方案2】:
我认为 qt 不可能这样做,因为睡眠模式由 GNOME、Xfce 等桌面环境处理。 Qt 本身不能做到这一点,但也许你可以使用一个函数,它只是向操作系统发送一个命令,它有机会将系统设置为睡眠状态。也许这可以帮助你:
https://linuxer.eu/put-linux-into-sleep-from-command-line/
【讨论】:
以上是关于如果用户没有响应,qt 中是不是有任何 api 或方法可以在特定时间后将设备置于睡眠模式?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测 qt 标签(或任何小部件)是不是具有所需的所有空间?