2

我想编写一个 Qt 应用程序,其主要目的是警告用户在关闭计算机之前有一些事情要做。我认为这是可能的,因为许多应用程序在计算机即将关闭时要求用户在退出之前保存。我还希望用户能够中断关闭过程,就像那些应用程序允许用户说“取消”一样。

有没有办法在 Qt 中做到这一点?

如果没有,至少在 gnome 会话中如何做到这一点?(支持更多桌面环境会很好,但目前这个应用程序仅供我和我的朋友使用,我们都使用 gnome。)

我阅读了有关信号的信息QCoreApplication::aboutToQuit(),但文档说它不允许用户交互。我的应用程序不使用任何小部件(可能只是一个系统托盘图标),因此QWidget::closeEvent也没有任何用处。

处理适当的posix信号会有帮助吗?但据我所知,这样的信号处理程序可能只包含琐碎的语句,询问用户是否真正关闭并非易事。

如果有帮助,这里有一些细节: 当用户想要关闭计算机时,我的应用程序将检查存储库(他配置为监视)是否“干净”,即没有什么可以提交。如果有东西要提交,应用程序应该警告用户并让他选择忽略未提交的文件或中止关闭过程(以提交更改)。

4

1 回答 1

2

您应该实现会话处理。当操作系统关闭时,QApplication::commitData()调用,您可以要求会话管理器允许用户交互:

在此功能中,除非您请求经理明确许可,否则无法进行任何用户交互。

这里还有一个关于您的用例的示例

于 2012-08-14T08:33:11.657 回答