前言
QDialog的继承的类
对话框的分类
1.通过对话框的智能程度,可根据应用程序写入对话框中数据的多少将其划分为:
- 简易对话框:
定义:
对话框的调用者会把对话框中的各窗口部件全部设置为初始值,也可由对话框调用者直接获取各窗口部件的最终值。简易对话框不掌握个窗口部件中用于编辑和显示的数据。 - 标准对话框:
定义:
如果一个对话框会根据自己的初始化程序或者方法所给定的设置值来初始化各个窗口部件,且最终值是由调用的方法或者其实例中的变量决定而不是直接通过对话框的窗口部件来决定的对话框,即可认为为标准对话框。
标准对话框即可以是含有“接收”和“拒绝”按钮的模态对话框
又可以是含有“应用”和“关闭”按钮并可通过信号和槽连接机制通知状态改变的非模态对话框。 - 智能对话框:
- 定义:如果一个对话框能够根据传送到其初始化程序中的引用数据或者数据结构来初始化各个窗口部件,这就是使其能够根据用户交互来直接更新数据的能力,这种对话框即可认为是智能的对话框。
- 通常是非模态对话框,此时可以无按钮,可根据所获得的数据来直接反映对窗口部件的变化。非模态智能对话框具有“应用(apply)”按钮,可通过信号和槽连接机制来表明状态的变化。
2.模态划分:
根据显示方式可以分为模态和非模态两种用法。
-
模态对话框:
一旦调用该对话框,它就会成为应用程序唯一能够与用户进行交互的部件,它会阻止其父窗口,父窗口的父窗口并直至顶层窗口等的交互,当然也会阻止与父窗口同层各兄弟窗口的交互
我们不需要“实时”或者交互式地更新画笔的属性,所以模态对话框足够。
用法:
d.exec_():模态化显示 d。 意味着,对话框的父窗口以及其兄弟窗口都会被阻塞,直到这个对话框关闭。 -
非模态对话框
如果用户可以重复更改数字格式并能马上看到修改效果,那么就无须不停的调用,接收对话框中数字格式修改所给出的提示,从而变得非常方便。使用非模态对话框。用户可以与该对话框以及应用程序的其他部分交互。
非模态的实时对话框
用法:
d.show()非模态显示 d。
对话框的部分用法
语法 | 说明 |
---|---|
d.accept() | 关闭(隐藏)d,停止其事件循环,exec_()会返回True值。如果设置了Qt.WA_DeleteOnClose(),会直接删除该对话框 |
d.reject() | 关闭(隐藏)d,停止其事件循环,exec_()会返回False。 |
d.done(i) | 关闭(隐藏)d,停止其事件循环,exec_()会返回int i 值。 |
d.exec_() | 模态化显示 d,阻塞进程(后面的代码不执行)直至关闭它 |
d.show() | 非模态化显示 d;从QWidget继承而来 |
d.setSizeGrip-Enabled(b) | 根据bool b的值来决定显示还是隐藏 d的尺寸大小拖拽符。 |