一、模态和非模态对话框
上一节中,我们实现了搭建一个简单的窗口,并且添加了如菜单栏、工具栏等项目。

但现在的窗口只是徒有其形,其内部的功能却一个都没有实现。
这节我们实现点击一个按钮,弹出一个对话框的功能。
1.1 介绍
对话框分为两种
- 模态对话框:弹出后,可以对其他窗口进行操作
- 非模态对话框:弹出后,无法点击除了对话框以外的其他区域(代码阻塞)
1.2 代码创建
引入头文件
#include <QDialog>`
编写对话框
connect(ui->actionNew,&QAction::triggered,[=](){
//模态对话框 (不可以对其他窗口进行操作) 非模态对话框 (可以对其他窗口进行操作)
//模态创建 阻塞
QDialog dlg(this);
dlg.resize(200,100);
dlg.exec();
qDebug() << "模态对话框弹出了"; //需要引入#include <QDebug>
//非模态对话框
QDialog * dlg2 = new QDialog (this);
dlg2->resize(200,100);
dlg2->show();
dlg2->setAttribute(Qt::WA_DeleteOnClose);
qDebug() << "非模态对话框弹出了";
}
二、标准对话框
Qt提供了很多内置对话框:
| Qt内置对话框 | 功能 |
|---|---|
| QColorDialog | 选择颜色 |
| QFileDialog | 选择文件或者目录 |
| QFontDialog | 选择字体 |
| QInputDialog | 允许用户输入一个值,并将其值返回 |
| QMessageBox | 模态对话框,用于显示信息、询问问题等 |
| QPageSetupDialog | 为打印机提供纸张相关的选项 |
| QPrintDialog | 打印机配置 |
| QPrintPreviewDialog | 打印预览 |
| QProgressDialog | 显示操作过程 |
以下以消息对话框为例。
评论