Bootstrap

Qt教程(007):对话框介绍

8、对话框

8.1 标准对话框

所谓标准对话框,是Qt内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的。比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。

Qt内置的对话框大致分为以下几类:

QColorDialog:选择颜色;

QFileDialog:选择文件或者目录;

QFontDialog:选择字体;

QInputDialog:允许用户输入一个值,并将其值返回;

QMessageBox:模态对话框,用于显示信息,询问问题等;

QPageSetupDialog:为打印机提供纸张相关的选项;

QPrintDialog:打印机配置;

QPrintPreviewDialog:打印预览;

QProgressDialog:显示操作过程;

8.2 模态和非模态对话框

对话框介绍:

模态对话框:不可以对其它窗口进行操作。

非模态对话框:可以对其它窗口进行操作。

新建项目,并添加菜单栏

image-20241110093902766

需求,点击新建按钮,弹出一个对话框

【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", "错误");

实现效果:

image-20250301105756932

信息对话框

实现代码:

QMessageBox::information(this, "info", "信息");

实现效果:

image-20250301112156671

提问对话框

实现代码:

QMessageBox::question(this, "question", "提问");

实现效果:

image-20250301112300995

修改显示按钮:

QMessageBox::question(this, "question", "提问", QMessageBox::Save|QMessageBox::Cancel);

image-20250301112843255

修改默认选中的按钮为cancel

QMessageBox::question(this, "question", "提问", QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel);

实现效果:

image-20250301113012051

参数解析:

  • 参数1:父亲
  • 参数2:标题
  • 参数3:提示内容
  • 参数4:按键类型
  • 参数5:默认关联回车按键

如何判断用户是否点击了Save按钮:

if(QMessageBox::Save == QMessageBox::question(this, "question", "提问", QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel))
{
    qDebug() << "用户点击了保存。";
}
else
{
    qDebug() << "用户点击了取消。";
}

实现效果:

image-20250301113457711

警告对话框
QMessageBox::warning(this, "warning", "警告");

实现效果:

image-20250301113741189

;