【Qt學習】qApp->quit()/exit(0);退出程序的實際應用與結果分析

網上許多文章介紹說,qApp->quit()可以直接退出Qt程序。我最開始的理解是:當程序運行到這句代碼時,就會立即退出exe程序,後來發現根本沒有效果。

經過反覆實驗後,特得出以下結論(以下結論基於Qt4.8.7+vs2008中的運行,其他Qt版本應該兼容且適用):

1、qApp->quit/exit(0);執行後,程序仍會毫無阻攔的執行下去,與正常運行幾乎無不同之處。

2、目前發現的一個不同點在於:執行這句代碼後,後續的程序中若有QMessageBox類的彈出窗口要彈出,此時都會一閃而過,即不再阻塞程序來接收用戶的反饋,而是無操作後直接消失,繼續執行接下來的代碼。

3、quit()之後順序自動執行的代碼都執行完畢,重新回到exec()的事件循環中(即開始等待用戶事件,自定義的while循環等不算)時,qApp->quit/exit(0)纔會發揮關閉程序的作用,中斷事件循環,退出程序。

4、因此,若想qApp->quit()語句發揮作用,應儘快回到事件循環中。常用的辦法是,與 return; 配合使用,直接退出當前函數,回到事件循環中去。

注意:

該語句的執行必鬚髮生在exec()事件循環啓動之後,即先有“雞”(事件循環啓動),纔能有“蛋”(中斷事件循環)。否則,語句無效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章