Qt退出主窗口


https://www.cnblogs.com/zhaobinyouth/p/9478010.html

此外如果需要直接退出某個應用程序,可以直接調用Qt中的一個全局指針:qApp ,全局指針qApp指向全局的QApplication對象。

在需要停止程序運行的位置直接加入如下代碼

#include <QtGui/QApplication> / #include <QApplication>
...
  qApp->quit();

說明:

qApp是一個全局的函數,可以在Qt說明文檔中直接找到,不是main函數定義的QApplication對象。(QApplication對象也可以退出,使用 app->exit(0);或者 app->quit();)
exit是可以帶一個參數的,可以設置退出標志,而quit相當於調用exit(0)。
qApp->quit()關閉的是整個應用程序,不只是窗口
一般情況下關閉窗口應用程序會直接退出,如果要求關閉窗口時,應用程序不退出,則需要設置QApplication的屬性:
QApplication::setQuitOnLastWindowClosed(false);

通過qApp->quit();的方式結束程序的運行,一些窗口的析構函數和closeevent事件都得不到執行,程序就結束退出了,
如果析構函數或者closeevent事件中安排了自己的功能代碼,需要在qApp->quit();執行前顯示的使用delete或close。

注意

在a.exec()之前使用qApp->quit()無效。exec開始時間循環,而在之前調用的對話框的事件循環不能處理到應用程序的quit事件。
當然,此處有一個最簡單的解決辦法,如果登錄失敗,則讓main函數直接返回,而不要去構造顯示主界面,也不要再開啟應用程序的事件循環。
而在事件循環開始后的其他地方,如主界面中可以點擊退出按鈕來退出等,則可以調用QApplication::exit(0)或者quit來退出。
終結起來一句話,在開啟事件循環之前,對exit和quit的調用都是無效的,會被忽略掉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM