8、对话框
8.1 标准对话框
所谓标准对话框,是Qt内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的。比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。
Qt内置的对话框大致分为以下几类:
QColorDialog
:选择颜色;
QFileDialog
:选择文件或者目录;
QFontDialog
:选择字体;
QInputDialog
:允许用户输入一个值,并将其值返回;
QMessageBox
:模态对话框,用于显示信息,询问问题等;
QPageSetupDialog
:为打印机提供纸张相关的选项;
QPrintDialog
:打印机配置;
QPrintPreviewDialog
:打印预览;
QProgressDialog
:显示操作过程;
8.2 模态和非模态对话框
对话框介绍:
模态对话框:不可以对其它窗口进行操作。
非模态对话框:可以对其它窗口进行操作。
新建项目,并添加菜单栏
需求,点击新建按钮,弹出一个对话框
【1】模态对话框创建
// 模态对话框创建:阻塞
QDialog dlg(this);
dlg.resize(200, 100);
dlg.exec();
qDebug() << "模态对话框弹出了。";
【2】非模态对话框创建
// 非模态对话框
QDialog * dlg2 = new QDialog(this);
dlg2->resize(200, 100);
dlg2->show();
// 防止对话框无限的打开关闭导致泄露,设置关闭的时候删除
dlg2->setAttribute(Qt::WA_DeleteOnClose);
qDebug() << "非模态对话框弹出了。";
8.3 消息对话框
QMessageBox
用于显示消息提示。我们一般会使用其提供的几个static函数。
错误对话框
实现代码:
// 消息对话框
QMessageBox::critical(this, "critical", "错误");
实现效果:
信息对话框
实现代码:
QMessageBox::information(this, "info", "信息");
实现效果:
提问对话框
实现代码:
QMessageBox::question(this, "question", "提问");
实现效果:
修改显示按钮:
QMessageBox::question(this, "question", "提问", QMessageBox::Save|QMessageBox::Cancel);
修改默认选中的按钮为cancel
:
QMessageBox::question(this, "question", "提问", QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel);
实现效果:
参数解析:
- 参数1:父亲
- 参数2:标题
- 参数3:提示内容
- 参数4:按键类型
- 参数5:默认关联回车按键
如何判断用户是否点击了Save
按钮:
if(QMessageBox::Save == QMessageBox::question(this, "question", "提问", QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel))
{
qDebug() << "用户点击了保存。";
}
else
{
qDebug() << "用户点击了取消。";
}
实现效果:
警告对话框
QMessageBox::warning(this, "warning", "警告");
实现效果: