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

探讨了在Qt中如何正确处理主窗口关闭时隐藏的登录窗口的状态问题,并介绍了利用quitOnLastWindowClosed属性确保应用程序行为的一致性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设有这么一个“游戏”需求:

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

打赏二维码:

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值