对话框:与用户进行短暂交互的顶层窗口(应该只为对话框设计单一功能)
QDialog 是Qt中所有对话框窗口类的基类:
QDialog继承于QWidget,也是一种容器容器类型组件
QDialog类及其子类不能作为子部件嵌入其他容器中
QDialog是定制了窗口样式的特殊的QWidget
对话框分类:
模态对话框( 调用成员函数exec()显示的对话框)
显示后用户无法与其他窗口进行交互
模态对话框是一种阻塞式的对话框调用方式
非模态对话框( 调用成员函数show()显示的对话框)
显示后用户可以与其他窗口进行交互
非模态对话框是一种非阻塞式的对话框调用方式
应用:
模态对话框应用于用户必须作出选择的场合(如消息提示、文件选择等)
非模态对框应用于特殊功能设置的场合(如查找、属性设置等)
用法:
由于模态/非模态对话框的特性:
(1)、模态对话框:可以在栈上创建模态对话框
(2)、非模态对话框:
1)在堆上创建非模态对话框而指向对话框的指针在栈上时,需要调用成员函数setAttribute设置对话框的Qt::WA_DeleteOnClose属性(此种方法创建对话框几乎没办法二次使用,设置属性使对话框在被close时销毁)
2)非模态对话框作为成员变量或也在堆上创建但指向对话框的指针是成员(如需多次使用则不用设置上述属性,且被close时默认不是销毁而是隐藏直到下一次show() )
3)通过成员函数setModal()可以设置非模态对话狂为混合属性对话框(对话框显示时不允许用户与其他窗口交互同时不阻塞的程序的执行流)
返回值:
只有模态对话框才有返回值,返回值用于表示与用户的交互结果
成员函数exec()的返回值为交互结果
(1)、调用void QDialog::done( int r )时返回值为done()的参数
(2)、返回值为QDialog::Rejected 用户拒绝
(3)、返回值为QDialog::Accepted用户接受
声明:
此文根据 狄泰学院唐老师的《QT实验分析教程》创作