Qt之模态非模态窗口

概述:

1.最近在项目中会遇到用户登录窗口,逻辑就是输入正确用户名密码方可进入程序,这个时候我们的窗口实现就要是模态的,之前都是用exec();劲爆方式实现,经过看帮助手册有其他方式来进行设置,分享下Qt的三种实现方式。
2.Qt有两种方法可以实现模态窗口:
(1)使用QDialog窗口->exec(); //阻塞整个程序所有窗口
(2)使用setModal()函数来实现; //阻塞整个程序所有窗口
(3)使用setWindowModality(Qt::ApplicationModal);//阻塞整个窗口

示例代码:

//方法一
//绑定父指针后此指针不需要delete
ModelDialog *model = new ModelDialog(this);
//设置窗口状态为模态窗口
model->setModal(true);
model->show();

//方法二
ModelDialog *model = new ModelDialog(this);
model->exec();

//方法三 《在即将显示窗口的构造中进行设置即可》
setWindowModality(Qt::NonModal);			//不阻塞任何窗口
setWindowModality(Qt::ApplicationModal);	//阻塞整个窗口

over:

欢迎大家关注作者在文末评论、点赞、转发以及批评指正!
如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!

文末一句话:

乌鸦学老鹰去抓羊,结果被羊毛卷住了爪子,最后被牧羊人活活的摔死了。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐