模态对话框就是在我们没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互,比如新建项目时弹出的对话框。要想使一个对话框成为模态对话框,只需要调用它的exec()函数:

QDialog dialog(this);
dialog.exec();

而对于非模态对话框,既可以与它交互,也可以与同一程序中的其他窗口交互,例如Microsoft Word中的查找替换对话框。要使一个对话框成为非模态对话框,我们就可以使用new操作来创建,然后使用show()函数来显示。

QDialog *dialog = new QDialog(this);
dialog->show();

使用show()函数也可以建立模态对话框,只需在其前面使用setModal()函数即可。例如:

QDialog *dialog = new QDialog(this);
dialog->setModal(true);
dialog->show();

现在运行程序,可以看到生成的对话框是模态的。但是,它与用exec()函数时的效果是不一样的。这是因为调用完show()函数后会立即将控制权交给调用者,那么程序可以继续往下执行。而调用exec()函数却不是这样,它只有当对话框被关闭时才会返回。

与setModal()函数相似的还有一个setWindowModality()函数,它有一个参数来设置模态对话框要阻塞的窗口类型,可以是:

  • Qt::NonModal(不阻塞任何窗口,就是非模态)
  • Qt::WindowModal(阻塞它的父窗口和所有祖先窗口以及它们的子窗口)
  • Qt::ApplicationModal(阻塞整个应用程序的所有窗口)

而setModal()函数默认设置的是Qt::ApplicationModal

QT中的模态和非模态对话框相关推荐

  1. Qt下的模态和非模态对话框

    模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等. 所谓模态对话框就是在 ...

  2. Qt -- 19模态和非模态对话框

    什么是模态和非模态对话框 点不了其他的功能和界面.这种对话框就称为模态对话框.还有一些能够操作其他的窗口属于非模态对话框. 下面新建一个工程,新建好之后,在设计界面中搭建如下图所示窗体(1.在菜单项中 ...

  3. Qt 模态和非模态窗口的创建与关闭

    首先应该明确的是,不仅仅Qt中包含模态窗口和非模态窗口,任何一个窗口界面开发的工具都应该具备此项功能. 模态窗口最简单的理解是在模态窗口打开之后,用户只能与这个窗口进行交互,而在其关闭之前不能与其他窗 ...

  4. C++MFC基于对话框的编程——模态(非模态)对话框

    目录 一.添加MFC功能 二.创建基于MFC的应用程序框架 三.初识界面 四.上案例 1.拖控件button(两个) 2.改控件名字 2.1改名方法1 2.2改名方法2 3.添加两个新的对话框(Dia ...

  5. VC显示\关闭\销毁模态与非模态对话框技巧

    VC显示,关闭,销毁模态与非模态对话框技巧 显示对话框 显示模式对话框 CDialogDemo dlg; dlg.DoModal(); 显示非模式对话框 CDialogDemo *dlg=new CD ...

  6. JavaScrip高级应用:操作模态与非模态对话框

    JavaScrip高级应用:操作模态与非模态对话框  本文出自:http://www.computerworld.com.cn 作者: 甘冀平 (2002-01-29 20:41:38)  我们知道, ...

  7. java 非模态_JavaScrip高级应用:操作模态与非模态对话框

    http://www.computerworld.com.cn 作者: 甘冀平 (2002-01-29 20:41:38) 我们知道,对话框一般分为两种类型:模态类型(modal)与非模态类型(mod ...

  8. PyQt4编程之模态与非模态对话框(一)

    模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应.如单击[确定]或[取消]按钮等将该对话框关闭.---- ...

  9. win32模态与非模态对话框

    win32模态与非模态对话框 一.模态对话框与非模态对话框的区别 二.模拟实现模态窗口 1. 非阻塞的方式实现窗口的模态 2. 阻塞的方式实现窗口的模态 一.模态对话框与非模态对话框的区别 使用Dia ...

  10. Win32_SDK_非模态对话框(非模态对话框窗口的销毁,模态与非模态对比,计算器项目练习)

    文章目录 1. 模态对话框与非模态对话框对比 2. 计算器项目练习模态与非模态对话框 3. 代码位置 1. 模态对话框与非模态对话框对比 模态对话框是通过DialogBox函数生成窗口,且函数的返回值 ...

最新文章

  1. 网格的铺设问题——骨牌
  2. ApplicationStartedEvent 与 ContextStartedEvent 有区别吗?
  3. img引Linux的绝对路径,什么是绝对路径和相对路径
  4. c++删除容器中的奇数
  5. MACD 的数学解释
  6. 2022年跨境品牌出海新玩法策略:Tiktok+速卖通平台运营必不可少
  7. 计算机组成原理中7421,计算机组成原理07421
  8. mysql从表截取信息_mysql中循环截取用户信息并插入到目标表对应的字段中
  9. 2017.3.8 太空飞行计划问题 失败总结
  10. 自学前端开发,前端进阶阶段需要学习哪些知识?
  11. 为什么你很努力,进步却很慢?
  12. hive中的集合操作函数
  13. 新手程序员必学的代码编程技巧
  14. 微信小程序地图生态概述
  15. Linux挖矿病毒查杀
  16. 为什么要使用dubbo
  17. 搜索战火重燃,夸克升级个人云服务做网盘的逻辑是什么?
  18. linux中vim保存快捷键设置,Linux中vim操作快捷键非常简洁
  19. jquery+easyui培训文档
  20. 提供一些网上webservice的WSDL地址

热门文章

  1. PyTorch深度学习-跟着小土堆学习
  2. 如何查看apk安装包源代码??Android反编译apk,解包,打包,签名一体化实测 ,修改图片音频软件名称版本号等入门
  3. Shiro学习(6)Realm整合
  4. 声源近场与远场定位及方法
  5. 报错:Error: module property was removed from Dependency
  6. vue项目上传图片的方法
  7. register at least one qt version using“qt vs tools“->“qt options“
  8. 超级详细解析——字模
  9. 实现用户名、邮箱、手机号三种都可以登录
  10. (转)Android单元测试