Qt窗口hide()后的关闭机制

Posted xiang--liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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函数做以下更改时,"登陆"窗口不会关闭,如图所示:


以上是关于Qt窗口hide()后的关闭机制的主要内容,如果未能解决你的问题,请参考以下文章

Qt窗口及控件-窗口Close()自动释放

WPF怎样关闭当前窗口

关于wpf中按钮关闭原窗口,开启新窗口

Qt +启动后隐藏窗口

求助QT窗口最大,最小,关闭按钮问题

qt界面怎么去掉窗口关闭的按钮