【问题标题】:Qt QMainWindow difference between closing by user and abort via systemQt QMainWindow 用户关闭和系统中止之间的区别
【发布时间】:2011-11-22 11:05:43
【问题描述】:


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

【问题讨论】:

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

标签: qt events abort qmainwindow


【解决方案1】:

如果您的应用程序收到SIGKILL,它将没有任何时间做任何事情。它被当场终止。您无法捕捉或阻止该信号。因此,您无法将 SIGKILL 与正常的应用程序关闭“区分开来”:您将不知道何时被强行杀死。 (TerminateProcess() 也一样。)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多