Qt QMainWindow用户关闭和通过系统中止之间的差异

Qt QMainWindow用户关闭和通过系统中止之间的差异,qt,events,abort,qmainwindow,Qt,Events,Abort,Qmainwindow,您能告诉我如何确定用户发起的QMainWindow关闭事件和Linux中的SIG_KILL或Windows中的TerminateProcess()的正常终止之间的关系吗? 这是因为紧迫性存在差异。 我可以拒绝用户关闭,或者用户可以根据需要进行思考。 但我必须在中止时尽快保存中间结果和当前状态,或者直到用户进行下一次致命中止尝试。 我可以尝试分析closeEvent()上的鼠标位置。但这取决于任务栏的外观。我可以将应用程序设置为非最小化状态,并等待下一个用户操作。但在堕胎案件中,这不是一个好的行为


您能告诉我如何确定用户发起的QMainWindow关闭事件和Linux中的SIG_KILL或Windows中的TerminateProcess()的正常终止之间的关系吗?
这是因为紧迫性存在差异。
我可以拒绝用户关闭,或者用户可以根据需要进行思考。
但我必须在中止时尽快保存中间结果和当前状态,或者直到用户进行下一次致命中止尝试。
我可以尝试分析closeEvent()上的鼠标位置。但这取决于任务栏的外观。我可以将应用程序设置为非最小化状态,并等待下一个用户操作。但在堕胎案件中,这不是一个好的行为。用户可以尝试下一个致命的中止操作,否则将丢失保存时间。

祝您好运,Gennady

如果您的应用程序收到一个
SIGKILL
,它将没有时间做任何事情。它当场终止。你无法捕捉或阻止那个信号。因此,您无法“区分”SIGKILL和正常的应用程序关闭:您将不知道何时被强制杀死。(对于
TerminateProcess()
,情况也是如此)


如果在正常应用程序关闭期间需要执行某些操作,则应将清理例程连接到信号。检查文档,这正是它的设计目的。

如果您有新问题,请提出新问题。