2011-11-22 6 views
0


ユーザーが開始したQMainWindowクローズイベントと、LinuxのSIG_KILLまたはWindowsのTerminateProcess()による異常終了をどのように判断できますか?
緊急性の違いが存在するためです。
私は、ユーザーまたはユーザーによるクローズを拒否することができますが、必要な限り考えることができます。
しかし、中断したり、次の致命的打ち切り試行を行うまで、できるだけ早く中間結果と現在の状態を保存しなければなりません。
closeEvent()でマウスの位置を分析することができます。しかし、それはタスクバーの外観に依存します。私は、アプリケーションを非最小化状態に設定して、次のユーザーアクションを待つことができます。しかし、それは中断の場合の良い行動ではありません。ユーザーは次の致命的なアボート操作を試みることができます。または、保存の時間が失われます。
敬具、ゲンナジーQt QMainWindowは、ユーザーによるクローズとシステムによる中止の違いを示します。

+0

新しい質問がある場合は、新しい質問をしてください。 – Mat

答えて

2

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

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

関連する問題