Qt的模态与非模态

本文详细解释了Qt编程中模态与非模态窗口的区别与使用方法,包括如何通过设置属性来实现窗口的模态与非模态状态,以及它们在程序运行过程中的行为差异。

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

模态、非模态

1、非模态 
Device = new Server_Device(this);
Device->show();
//父窗口可被操作 当close();后 仍可show()出 使用
this->setAttribute(Qt::WA_DeleteOnClose);//可使窗口在close();时释放

2模态

在子窗口中
Device = new Server_Device(this);
Device->show();
this->setAttribute(Qt::WA_ShowModal, true);

//父窗口不可被操作 在子窗口使用期间,父窗口仍可被信号激发 可使用
this->setAttribute(Qt::WA_DeleteOnClose); //可使窗口在close();时释放

3模态exec
Server_Device Device;
Device.exec();
//父窗口不可被操作并一直处于Device.exec();在等待返回,不能被信号激发

由于是在栈上创建的,离开此槽函数后,被销毁,不需要手动销毁 

**注意由于在堆上创建(Device = new Server_Device(this);)和棧上创建(Server_Device Device;),对象的生命周期不同,在以上两种中,匀不能在棧上创建,否则窗口一闪而过;

但此模态也可以使用在堆上创建,使用后需手动销毁   (在exec();后销毁)


END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值