Qt 当应用程序被要求退出时允许用户交互
我想写一个Qt应用程序,它的主要目的是警告用户在关闭计算机之前有一些事情要做。我认为这是可能的,因为许多应用程序要求用户在计算机即将关闭时退出之前进行保存。我还希望用户能够中断关机过程,就像那些允许用户说“取消”的应用程序一样 在Qt中有没有办法做到这一点 如果不是,至少在gnome会话中如何做到这一点?(支持更多桌面环境会很好,但目前该应用程序仅适用于我和我的朋友,我们都使用gnome。) 我读过关于signalQt 当应用程序被要求退出时允许用户交互,qt,operating-system,signals,gnome,shutdown,Qt,Operating System,Signals,Gnome,Shutdown,我想写一个Qt应用程序,它的主要目的是警告用户在关闭计算机之前有一些事情要做。我认为这是可能的,因为许多应用程序要求用户在计算机即将关闭时退出之前进行保存。我还希望用户能够中断关机过程,就像那些允许用户说“取消”的应用程序一样 在Qt中有没有办法做到这一点 如果不是,至少在gnome会话中如何做到这一点?(支持更多桌面环境会很好,但目前该应用程序仅适用于我和我的朋友,我们都使用gnome。) 我读过关于signalQCoreApplication::aboutToQuit(),但文档中说它不允许
QCoreApplication::aboutToQuit()
,但文档中说它不允许用户交互。我的应用程序不使用任何小部件(可能只是一个系统托盘图标),因此QWidget::closeEvent
也没有任何用处
处理适当的posix信号是否有帮助?但据我所知,这样的信号处理程序可能只包含琐碎的语句,询问用户是否真的要关闭并不是琐碎的事情
如果有帮助,这里有一些细节:当用户想要关闭计算机时,我的应用程序将检查存储库(他配置为监视)是否“干净”,即没有要提交的内容。如果有要提交的内容,应用程序应该警告用户,让用户选择忽略未提交的文件或中止关闭过程(以便提交更改)。您应该实现。当操作系统关闭时,会调用QApplication::commitData()
,您可以要求会话管理器允许用户交互:
在该功能中,除非您请求经理明确许可,否则不可能进行用户交互
还有一个关于您的用例的例子。您如何退出应用程序?在GUI应用程序中,当最后一个窗口关闭时,事件循环退出。你将如何在应用程序中保留循环?@Mehrwolf应用程序从不退出。我说的是关闭计算机,它会向所有正在运行的进程发送一些信号。我想要捕捉这个信号,并且仍然想要允许用户交互。我猜POSIX信号不是正确的方式,桌面环境的会话管理器在杀死应用程序之前会与应用程序进行通信,
QSessionManager
似乎是正确的选择(请参阅Claudio的答案)。是的,非常感谢。这似乎正是我想要的。正如我猜测的那样,我忽略了它。。。