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