在要求退出应用程序时允许用户交互

时间:2012-08-13 23:19:29

标签: qt operating-system signals gnome shutdown

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

有没有办法在Qt中执行此操作?

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

  

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

还有一个关于您的用例here的示例。