Qt4中的模态与非模态对话框用法总结

Qt4中的模态与非模态对话框用法总结

http://blog.csdn.net/qter_wd007/article/details/5358049

分类: 零基础学Qt 4编程2010-03-08 21:57 469人阅读 评论(1) 收藏 举报

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

所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。

在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框;另一种是使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性。

在Qt中,Qt的模态与非模态对话框选择是通过其属性modal来确定的。我们来看看modal属性,其定义如下:

modal : bool

默认情况下,对话框的该属性值是false,这时通过show()方法显示的对话框就是非模态的。而如果将该属性值设置为true,就设置成了模态对话框,其作用于把QWidget::windowModality属性设置为Qt::ApplicationModal。

而使用exec()方法显示对话框的话,将忽略modal属性值的设置并把对话框设置为模态对话框。

一般使用setModal()方法来设置对话框的modal属性。

我们总结一下设置对话框为模态的方法。

◆ 如果要设置为模态对话框,最简单的就是使用exec()方法,示例代码如下:

MyDialog myDlg;     myDlg.exec();

也可以使用show()方法,示例代码如下:

MyDialog myDlg;     myDlg.setModal(true);     myDlg.show();

◆  如果要设置为非模态对话框,必须使用show()方法,示例代码如下:

MyDialog myDlg;     myDlg.setModal(false);//或者myDlg.setModal();     myDlg.show();

再次强调,目前有的朋友对于模态对话框和非模态对话框的认识有误解,认为使用show()方法显示的就是非模态对话框,这是不正确的。

小贴士:有时候,我们需要一个对话框以非模态的形式显示,但又需要它总在所有窗口的最前面,这时可以通过如下代码设置:

MyDialog myDlg;     myDlg.setModal(false);//或者myDlg.setModal();     myDlg.show();      //关键是下面这行     myDlg.setWindowFlags(Qt::WindowStaysOnTopHint);

Qt4中的模态与非模态对话框用法总结

http://blog.csdn.net/qter_wd007/article/details/5358049

分类: 零基础学Qt 4编程2010-03-08 21:57 469人阅读 评论(1) 收藏 举报

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

所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。

在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框;另一种是使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性。

在Qt中,Qt的模态与非模态对话框选择是通过其属性modal来确定的。我们来看看modal属性,其定义如下:

modal : bool

默认情况下,对话框的该属性值是false,这时通过show()方法显示的对话框就是非模态的。而如果将该属性值设置为true,就设置成了模态对话框,其作用于把QWidget::windowModality属性设置为Qt::ApplicationModal。

而使用exec()方法显示对话框的话,将忽略modal属性值的设置并把对话框设置为模态对话框。

一般使用setModal()方法来设置对话框的modal属性。

我们总结一下设置对话框为模态的方法。

◆ 如果要设置为模态对话框,最简单的就是使用exec()方法,示例代码如下:

MyDialog myDlg;     myDlg.exec();

也可以使用show()方法,示例代码如下:

MyDialog myDlg;     myDlg.setModal(true);     myDlg.show();

◆  如果要设置为非模态对话框,必须使用show()方法,示例代码如下:

MyDialog myDlg;     myDlg.setModal(false);//或者myDlg.setModal();     myDlg.show();

再次强调,目前有的朋友对于模态对话框和非模态对话框的认识有误解,认为使用show()方法显示的就是非模态对话框,这是不正确的。

小贴士:有时候,我们需要一个对话框以非模态的形式显示,但又需要它总在所有窗口的最前面,这时可以通过如下代码设置:

MyDialog myDlg;     myDlg.setModal(false);//或者myDlg.setModal();     myDlg.show();      //关键是下面这行     myDlg.setWindowFlags(Qt::WindowStaysOnTopHint);


相关内容

  • js弹出对话框
  • js弹出对话框集合 - 对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的字符串,常见于某些留言本或者论坛输入内容那里的 插入UBB格式图片 下面我们 ...

  • 车床主轴模态分析
  • 基于ANSYS车床主轴模态分析 江苏师范大学机电工程学院 秦念对 摘要:车床主轴对零件加工精度有很大影响.通过三维绘图软件Pro/E建立主轴 的三维实体模型,再导入有限元软件ANSYS中进行模态分析.利用有限元分析方 法对主轴的固有频率和10阶模态图分析求解,可以在设计过程中得到主轴的动态 特性,对 ...

  • 模态对话框与非模态对话的销毁
  • 前几天发现自己的程序中使用非模态对话框,Debug版本有警告提示如下: Warning: calling DestroyWindow in CWnd::~CWnd OnDestroy or PostNcDestroy in derived class will not be called 由于是Wa ...

  • 计算机二级上机试题模拟49
  • <四十九套> 1. 基本操作题 在考生文件夹下有一个数据库文件"samp1.mdb ".一个Excel 文件"tScore.xls "和一个图像文件"photo.bmp ".在数据库文件中已经建立了一个表对象"tStu ...

  • ANSYS模态分析步骤
  • ANSYS模态分析步骤 第1步: 载入模型 Plot>Volumes,输入/units,SI(即统一单位M/Kg/S).若为组件,则进行布尔运算:Main Menu>Preprocessor>Modeling>Operate>Booleans>Glue(或Add) ...

  • 奥运电视公益广告多模态评价意义的构建
  • 2008年9月第24卷第3期 北京科技大学学报(社会科学版) JournalofUniversityofScienceandTechnologyBeijing (SocialSciencesEdition) Sep.2008 Vol.24No.3 奥运电视公益广告多模态评价意义的构建 陈瑜敏 (中山 ...

  • 圆锥形及阶梯型变幅杆模态分析
  • 超声波变幅杆的设计及修正 摘 要: 超声变幅杆是超声波振动系统中一个重要的组成部分.本文结合超声变幅杆理论对设计变幅杆进行结果分析及参数修正, 采用ANSYS 12.1对变幅杆进行了有限元模态分析,在此基础上,设计并加工了一个应用于超声显微切割系统中的.谐振频率为70 kHz的半波长圆锥型变幅杆,和 ...

  • DASP模态分析软件操作
  • 一.3018基本操作(采集数据) 1. 进入软件-工程版 2. 点击示波采样,将波形图的尺度设置为自动 3. 点击设置-基本参数-实验名.数据路径(自己建一个文件夹).试验号(可以自己 设置为第几次实验,也可以设为自动增加).采样频率(是分析频率的2.56倍满足采样频率).实验对象,实验工况(加工过 ...

  • 三要素总结
  • 窗体属性: 1. Name 名称 2. Appearance 显示效果,是否立体显示 3. BackColor 背景色 ForeColor 前景色 4. BorderStyle 边框样式 5. Caption 标题 控件上显示的文本 6. ControlBox 是否显示控制菜单框 7. Enable ...