Qt 應用程序退出


qt是半自動內存管理

1、當窗口有父窗口時,不需要自己delete

2、當窗口無父窗口時,如果設置了WA_QuitOnClose屬性(默認自帶),則窗口的closeEvent會被自動調用;但是這里有一個隱患,如果該窗口是最后一個關閉的,則主程序退出(主程序quitOnLastWindowClosed接口返回true,默認值為true),因此,如果窗口是頂層窗口,最好不要設置WA_QuitOnClose屬性,防止程序退出。

 

一般頂層窗口可以設置如下:
    setAttribute(Qt::WA_DeleteOnClose, true);
    setAttribute(Qt::WA_QuitOnClose, false);

作為主程序退出的窗口需要設置setAttribute(Qt::WA_QuitOnClose, true);為了退出應用程序,然后重寫closeEvent方法,可能代碼如下:

 1    if (m_ForceQuit == false)
 2     {
 3         setVisible(false);
 4         if (isMinimized())
 5         {
 6             setWindowState((windowState()/* | Qt::WindowActive*/) & ~Qt::WindowMinimized);
 7         }
 8         event->ignore();
 9     }
10     else
11     {
12         QWidget::closeEvent(event);
13     }

 

注意:WA_QuitOnClose和WA_DeleteOnClose是兩個屬性,幫助文檔解釋如下:

 


免責聲明!

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



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