当前位置:网站首页>Qt | 模态对话框和非模态对话框 QDialog
Qt | 模态对话框和非模态对话框 QDialog
2022-08-02 14:41:00 【华为云】
对于模态和非模态对话框的理解:
QDialog 类是所有对话框窗口类的基类。对话框窗口是一个经常用来完成短小任务或者和用户进行简单交互的顶层窗口。按照运行对话框时是否还可以和改程序的其他窗口进行交互,对话框常被分成模态对话框和非模态对话框。
模态对话框是在对话框关闭之前,不能再与同一个应用程序的其他窗口进行交互。
非模态对话框是可以与同意程序中的窗口交互的。
创建对话框的方法:
我们创建对话框时一般会用到三种方式:
1.使用 new 的方式创建一个非模态对话框:
QDialog *dialog = new QDialog(this);
dialog->show();
通过 new 一个 QDialog 对象指针,指定窗口的父窗口,调用 show()函数显示出来。这样是可以正常显示的,只不过这个窗口是非模态的,他不会阻止这段代码之后的代码的正常运行。并且因为指定了父窗口,所以不需要使用 delete()来释放该对象,在父窗口销毁时,会自动释放所有子窗口。
2.定义临时变量创建一个模态对话框:
QDialog dialog(this);
dialog.exec();
通过这种方式启动一个模态对话框,在程序走到这里时,会弹出对话框,并且这段代码之后的代码将不会执行,只有在这个对话框关闭之后才会继续执行。
3.使用 new 的方式创建一个模态对话框:
QDialog *dialog = new QDialog(this);
dialog->setModal(true);
dialog->show();
通过这种方式启动的对话框也是模态的,它和第一种方法的区别是调用了 setModal()函数。这时虽然是模态对话框,但是在这段代码之后的代码也是可以正常执行的。是因为在调用 show()函数后会立即将控制权交给调用者,程序可以继续往下执行。而调用 exec()函数时,只有当对话框关闭时才会返回。
setModal()函数:
与 setModal()函数功能相似的还有一个 setWindowModality()函数,它有一个参数来设置模态对话框要阻塞的窗口类型,这个参数可以是:
Qt::NonModal()//不阻塞任何窗口,就是非模态
Qt::WindowModal()//阻塞它的父窗口、所有祖先窗口以及他们的子窗口
Qt::ApplicationModal()//阻塞整个应用程序的所有窗口
setModal()函数默认设置的是 Qt::ApplicationModal。
边栏推荐
- 【go-zero】go-zero 框架踩坑指南 Q&A (持续更新中)
- 2022-07-26 第六小组 瞒春 学习笔记
- PAT甲级 1137 期终成绩
- this beta version of Typora is expired, please download and install a newer version.Typora的保姆级最新解决方法
- 统计二进制中1的个数,两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 什么是Nacos?
- 2022 VMware下载安装教程
- 单例模式(singleton pattern)
- 浅析PM2实用入门指南
- Mechanical keyboard failure
猜你喜欢

How to check the WeChat applet server domain name and modify it

Selenium元素定位方法总结

已解决ModuleNotFoundError: No module named‘ pip‘(重新安装pip的两种方式)

Redis最新6.27安装配置笔记及安装和常用命令快速上手复习指南

【学习笔记之菜Dog学C】自定义类型详解(结构体+枚举+联合)

语音直播系统——做好敏感词汇屏蔽打造绿色社交环境

IPtables and binlog

太香了!阿里Redis速成笔记,从头到尾全是精华!

两分钟录音就可秒变语言通!火山语音音色复刻技术如何修炼而成?

es6 循环,并终止循环
随机推荐
兆骑科创创业赛事活动路演,高层次人才引进平台
为什么四个字节的float表示的范围比八个字节的long要广
23.支持向量机的使用
【Untitled】
H5中的拖放(Drag 和 Drop)
软件代码签名证书怎么申请
【Untitled】
树状DP(记忆化搜索)PAT甲级 1079 1090 1106
Mechanical keyboard failure
Selenium元素定位方法总结
2022-07-20 第六小组 瞒春 学习笔记
Win 10、Win 11 安装 MuJoCo 及 mujoco-py 教程
Wigner-Ville distribution for time-frequency analysis
2022-07-16 第五小组 瞒春 学习笔记
2022/7/15,我的人生中第一篇博客,不忘初心,砥砺前行!
中国服装行业已形成一套完整的产业体系
马甲包接入过程记录
看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!
leetcode 504. Base 7 七进制数 (简单)
如何查看微信小程序服务器域名并且修改