qDialog的setmodal,对话框模态、非模态

本文深入探讨了模态和非模态对话框的区别,解析了如何在Qt中实现模态和非模态窗口,包括使用exec()和show()方法的不同效果,以及如何通过设置属性来控制窗口关闭时的行为。

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

对话框模态,关闭当前对话框前,无法操作其他窗口

非模态,当前对话框打开同时,也可以操作其他对话框

模态在对话框创建时设定好后,程序运行过程中无法切换!(如:对话框A当前为非模态,弹出后,设置为模态,不起作用)

 

1.如果使用exec()默认为模态的。如果用show()需要设置setModel(true)才是模态的。

 

方法1:模态窗口

A为窗口类,  父类窗口为B

A *dlg = new A(this,pB)(可确保A显示在B之上)

dlg->exe();

注意:此时使用setModal无效果

 

方法2:

A *dlg = new A(this,pB)(可确保A显示在B之上)

dlg-.setModel(true);

dlg->show();

 

2、close()会销毁对象嘛。只有当设置了 setAttribute(WA:closeOnDelelte)是才会删除,如果这个标志没有设置,其作用和hide(),setvisible(false)一样,只会隐藏改对象。

 

A为窗口类,  父类窗口为B

A *dlg = new A(this,pB)(可确保A显示在B之上)

dlg->setAttribute(WA:closeOnDelelte);

dlg->show;

注意,此时需要使用close();否则dlg指针未被管理。

 

3、QWidget的模态和非模态;

 

4、阻塞?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值