Qt中的模态对话框和非模态对话框

模态对话框:指该对话框关闭之前不可以对其他窗口进行操作,只有等该对话框关闭之后才可以操作其他窗口。
非模态对话框:该对话框激活的情况下也可以对其他窗口进行操作。

模态对话框:
Qdialog dlg;
dlg.show();
执行上面的代码,我们会发现窗口一闪而过,其原因是因为dlg被申明为一个局部变量,当用完之后就自动销毁,所以窗口show完之后立马就被释放。为了不让它一闪而过,使用
dlg.exec();//阻塞
这个语句起到阻塞程序的作用,当执行到这里的时候停住了,这样也不能对其他窗口进行操作,所以
Qdialog dlg;
dlg.exec();
就是模态对话框的写法。

非模态对话框:
Qdialog *dlg=new Qdialog;
dlg->show();
dlg->setAttribute(Qt::WA_DelecteOnClose);

执行上面程序弹出窗口不会一闪而过,因为new创建在堆上,不会自动销毁,需要手动delete。dlg->setAttribute(Qt::WA_DelecteOnClose)的作用是当窗口关闭时,对话框释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值