Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 当应用程序被要求退出时允许用户交互_Qt_Operating System_Signals_Gnome_Shutdown - Fatal编程技术网

Qt 当应用程序被要求退出时允许用户交互

Qt 当应用程序被要求退出时允许用户交互,qt,operating-system,signals,gnome,shutdown,Qt,Operating System,Signals,Gnome,Shutdown,我想写一个Qt应用程序,它的主要目的是警告用户在关闭计算机之前有一些事情要做。我认为这是可能的,因为许多应用程序要求用户在计算机即将关闭时退出之前进行保存。我还希望用户能够中断关机过程,就像那些允许用户说“取消”的应用程序一样 在Qt中有没有办法做到这一点 如果不是,至少在gnome会话中如何做到这一点?(支持更多桌面环境会很好,但目前该应用程序仅适用于我和我的朋友,我们都使用gnome。) 我读过关于signalQCoreApplication::aboutToQuit(),但文档中说它不允许

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

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

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

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

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

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

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

在该功能中,除非您请求经理明确许可,否则不可能进行用户交互


还有一个关于您的用例的例子。

您如何退出应用程序?在GUI应用程序中,当最后一个窗口关闭时,事件循环退出。你将如何在应用程序中保留循环?@Mehrwolf应用程序从不退出。我说的是关闭计算机,它会向所有正在运行的进程发送一些信号。我想要捕捉这个信号,并且仍然想要允许用户交互。我猜POSIX信号不是正确的方式,桌面环境的会话管理器在杀死应用程序之前会与应用程序进行通信,
QSessionManager
似乎是正确的选择(请参阅Claudio的答案)。是的,非常感谢。这似乎正是我想要的。正如我猜测的那样,我忽略了它。。。