0


ユーザーによって開始された QMainWindow クローズ イベントと、Linux の SIG_KILL または Windows の TerminateProcess() による異常終了を判断する方法を教えてください。
緊急度の違いがあるからです。
ユーザーによる閉鎖を拒否するか、必要な限りユーザーが考えることができます。
しかし、中断するとき、またはユーザーが次の致命的な中断を試行するまで、できるだけ早く中間結果と現在の状態を保存する必要があります。
closeEvent() でマウスの位置を分析してみることができます。ただし、タスクバーの外観によって異なります。アプリを非最小化状態に設定して、次のユーザー アクションを待つことができます。しかし、それはアボートの場合には良い振る舞いではありません。ユーザーは次の致命的なアボート アクションを試みることができます。そうしないと、保存の時間が失われます。
よろしく、 ゲンナディ

4

1 に答える 1

2

アプリケーションが を受け取った場合SIGKILL、何もする時間がありません。その場で終了です。その信号をキャッチまたはブロックすることはできません。したがって、SIGKILL を通常のアプリケーションのシャットダウンと「区別」することはできません。いつ強制的に強制終了されたかはわかりません。( についても同様ですTerminateProcess()。)

通常のアプリケーションのシャットダウン中に何かを行う必要がある場合は、クリーンアップ ルーチンをQCoreApplication::aboutToQuit()シグナルに接続する必要があります。ドキュメントを確認してください。まさにそのために設計されています。

于 2011-11-22T11:13:27.800 に答える