Qt窗口hide()后的關閉機制


https://blog.csdn.net/qq1623803207/article/details/78739960

 

假設有這么一個“游戲”需求:

1、用戶登陸界面。

2、登陸成功后,才能進入“游戲”主界面。

如圖:


登陸成功了,游戲界面顯示了,但登陸界面並沒有消失/隱藏。

為了使登陸界面隱藏,我們調用了hide()函數:


問題來了:

當“游戲”窗口關閉后,這個隱藏的“登陸”窗口怎么辦?是否還在運行?如果關閉了,是屬於正常關閉么?

當然,強大的“信號和槽”機制給任何問題都提供了一個行得通的思路,即:重寫closeEvent(QCloseEvent *event)的方法來通知“登陸窗口”.......

其實,“游戲”窗口關閉后,隱藏的“登陸”窗口屬於正常關閉

Qt的幫助文檔里面是這么說的:

quitOnLastWindowClosed : bool

This property holds whether the application implicitly quits when the last window is closed.

The default is true.

If this property istrue, the applications quits when the last visible primary window (i.e. window with no parent) is closed.

Access functions:

bool quitOnLastWindowClosed()

void setQuitOnLastWindowClosed(bool quit).

即:

quitOnLastWindowClosed是一個bool型的屬性,這個屬性用來保留"當最后一個窗口關閉的時候,應用程序是否隱式退出",默認值是true。

當這個屬性為true的時候,應用程序會在最后一個可見的主窗口(比如:沒有父窗口的窗口)關閉的時候退出。

訪問函數:

quitOnLastWindowClosed()來獲取當前的具體值。

setQuitOnLastWindowClosed(bool quit)來更改當前值。true:退出,false:不退出。


因此,當main函數做以下更改時,"登陸"窗口不會關閉,如圖所示:



免責聲明!

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



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