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函数做以下更改时,"登陆"窗口不会关闭,如图所示:


展开阅读全文

没有更多推荐了,返回首页