QT 窗体的show/exec、close/hide,调用close析构没有执行

1、show/exec

show时候只是把窗体显示出来,show后面的事件会继续执行,可以理解为非模态。

exec会把窗体显示出来,并且会暂停到这里,可以理解为模态,当窗体关闭才会执行后面的动作。

关于模态和非模态的讲解请看下面文字(感谢作者):

qt弹窗界面模态设置_求知者先的博客-CSDN博客_qt设置窗口为模态

2、close/hide

hide是隐藏窗体,不会发送任何信号。

close会隐藏窗体 ,会触发closeEvent,你可以自己重写closeEvent来控制隐藏或不隐藏,或自己的逻辑,但是默认情况下是不会触发窗体的析构函数的;如果需要触发析构函数,需要Qt::WA_DeleteOnClose标志影响窗体在内存中的状态。

如果你窗体是new出来的,系统close后迪触发窗体析构函数:
方法1:setAttribute(Qt::WA_DeleteOnClose); (如果不是new出来的,使用本方法,close可能会出现异常)
方法2: exec后,执行delete 对象即可;

不论是那种,主窗体关闭时候,都会析构销毁;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值