您能告诉我如何判断用户发起的QMainWindow关闭事件和Linux中的SIG_KILL或Windows中的TerminateProcess()异常终止吗?
这是因为紧急程度的差异是存在的。
我可以通过用户拒绝关闭,或者用户可以根据需要考虑。
但我必须在中止时尽快保存中间结果和当前状态,或者直到用户进行下一次致命中止尝试。
我可以尝试在closeEvent()上分析鼠标位置。但这取决于任务栏的外观。我可以将应用程序设置为非最小化状态,并等待用户的下一步操作。但在中止的情况下,这不是一个好的行为。用户可以尝试下一个致命的中止操作,否则保存时间将会丢失。
致以最好的问候,Gennady
发布于 2011-11-22 19:13:28
如果您的应用程序接收到SIGKILL,它将没有时间执行任何操作。它被当场终止。你不能捕捉或阻止那个信号。因此,您不能将SIGKILL与正常的应用程序关闭“区分”:您不会知道自己何时被强行终止。(TerminateProcess()也是如此。)
如果您需要在应用程序正常关闭期间执行某些操作,则应该将清理例程连接到QCoreApplication::aboutToQuit()信号。检查文档,这正是它设计的目的。
https://stackoverflow.com/questions/8225763
复制相似问题