qtcreator发送的信号“停止”

我正在使用Linux,并且我意识到我的应用程序正在使用Qt Creator IDE上的“停止”buttonclosures后台进程。 我想要处理这些情况,这样应用程序就像closures主窗口一样。 为了编写处理程序,我需要知道它对应的信号

Solutions Collecting From Web of "qtcreator发送的信号“停止”"

深入研究QtCreator的代码,我可以看到QtCreator在内部使用QProcess来启动您的应用程序。 红色的“停止”按钮连接到ApplicationLauncher::stop() ,这会以两种方式之一终止您的进程,这取决于它是一个GUI应用程序还是一个控制台应用程序,但是在这两种情况下,结果都是一样的Linux操作系统。

对于GUI应用程序, ApplicationLauncher调用QProcess::terminate() ,后者又向您的守护进程发送一个SIGTERM(在Linux上)信号。 然后等待waitForFinished() 1秒,如果守护进程尚未退出,则调用QProcess::kill() ,发送SIGKILL

对于控制台应用程序, ApplicationLauncher将终止委托给ConsoleProcess实用程序类。 在Linux上, ConsoleProcess::stop()作用类似于ApplicationLauncher ,GUI应用程序首先发送SIGTERM ,然后等待1秒,如果尚未终止,则发送SIGKILL

您将在这里找到来自QtCreator的相关代码:

  • GUI应用程序终止
  • 控制台应用终止(在Linux上)
  • 控制台应用终止(在Windows上)

短版:你不能

长版本:

你可以尝试使用:

http://doc.qt.digia.com/qt/qcoreapplication.html#aboutToQuit

但是这不会按预期工作。 如果一个进程被强制终止(这就是停止在IDE中做什么,我想在Windows上使用TerminateProcess() http://msdn.microsoft.com/en-gb/library/windows/desktop/ms686714 (v = vs.85).aspx ),那么这个进程会在执行的过程中立即被杀死。 仅仅从Qt处理这些情况是不可能的。