如果用户没有响应,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 并将间隔设置为您的睡眠超时持续时间,每次输入发生时您都会重新启动。例如,QTimertimeout 信号可以连接到一个插槽,您可以通过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 应用程序启动但没有响应

设置响应状态代码 [重复]

如何检测 qt 标签(或任何小部件)是不是具有所需的所有空间?

QT串口编程 - 阻塞主机示例(Blocking Master)

Laravel 强制 json 响应 api

如何在没有用户身份验证的情况下从 Spotify 或任何其他 API 获取歌曲预览