一、模态和非模态对话框

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

但现在的窗口只是徒有其形,其内部的功能却一个都没有实现。

这节我们实现点击一个按钮,弹出一个对话框的功能。

1.1 介绍

对话框分为两种

  • 模态对话框:弹出后,可以对其他窗口进行操作
  • 非模态对话框:弹出后,无法点击除了对话框以外的其他区域(代码阻塞)

1.2 代码创建

引入头文件

1
#include <QDialog>`

编写对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 显示操作过程

以下以消息对话框为例。