目录
基本概念
对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。
模态对话框|非模态对话框
前者在打开窗口时不能对其他窗口进行操作 (阻塞)
后者可以对其他窗口进行操作 (不会阻塞)
模态
在创建对话框之前 要包含头文件QDialog
这里显示的对话框出来 就只能在对话框内操作,点击其他地方都没反应
exe()起到的就是阻塞的功能,在对话框结束之前 这个”弹出对话框“都不会打印出来
非模态
先来看这段代码,这里成功创建了对话框,但是在点击新建后 对话框一闪而过就没了
这是为什么呢?
因为lambda表达是相当于一个函数,函数里面的东西在栈上,当函数执行完毕后,空间就被释放了,所以这里的对话框一闪而过
所以这里应该创建在堆区
这里也没有发生阻塞
还有一个问题,那就是这个堆区的数据,在执行结束后,现在并没有被释放,所以这里最好要加上释放内存的语句
这里的这两种方式都可以,先查函数接口麻烦就直接delete
消息对话框
QMessageBox
错误提示
第一个参数是父窗口,第二个参数是窗口标题,第三个参数是显示的文本
信息提示
询问提示
第一种用法
第二种
这里的第四个参数表示两个不同的选项
这里有查到所有的枚举值
第五个参数表示回车键默认的关联选项,从上面的截图可以看出默认关联的是第一个选项
这里设置成后面的Cancel
用法示例
警告提示
标准文件对话框
QFileDialog::getOpenFileName()返回值是选择的文件路径
其他的对话框
- QColorDialog: 选择颜色;
- QFileDialog: 选择文件或者目录;
- QFontDialog: 选择字体;
- QInputDialog: 允许用户输入一个值,并将其值返回;
- QMessageBox: 模态对话框,用于显示信息、询问问题等;
- QPageSetupDialog: 为打印机提供纸张相关的选项;
- QPrintDialog: 打印机配置;
- QPrintPreviewDialog:打印预览;
- QProgressDialog: 显示操作过程。