2011-11-22 120 views
0


您能告訴我如何確定由用戶啓動的QMainWindow關閉事件與Linux中的SIG_KILL異常終止或Windows中的TerminateProcess()異常終止?
這是因爲存在緊迫性的差異。
我可以拒絕用戶關閉或用戶可以認爲只要需要。
但是,我必須儘快保存中間結果和當前狀態,當中止或直到用戶將做下一個致命的中止嘗試。
我可以嘗試弄清楚分析closeEvent()上的鼠標位置。但這取決於任務欄的外觀。我可以將應用程序設置爲非最小化狀態並等待下一個用戶操作。但是這在墮胎案中並不是一個好的行爲。用戶可以嘗試下一個致命的中止操作,否則保存的時間將會丟失。
最好的問候,根納季Qt QMainWindow用戶關閉和系統中止之間的區別

+0

如果您有新問題,請提出新問題。 – Mat

回答

2

如果應用程序接收到SIGKILL,它不會有任何時間做任何事情。它當場被終止。您無法捕捉或阻止該信號。因此,您無法將SIGKILL與正常應用程序關閉「區分開來」:您無法知道何時被強行殺死。 (TerminateProcess()也是如此。)

如果您在正常應用程序關閉期間需要執行某些操作,則應將清理例程連接到QCoreApplication::aboutToQuit()信號。檢查文檔,這正是它的設計目的。