Qt中对话框:模态和非模态对话框、消息对话框、颜色对话框、文件对话框和字体对话框语法及用法(详细图文教程_附C++代码 )

在这里插入图片描述

💪 图像算法工程师,专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《图像增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》
📝《C++》
📝《Qt》


在这里插入图片描述

一、模态和非模态对话框

在 Qt 中,模态对话框(Modal Dialog)和非模态对话框(Non-Modal Dialog)是两种常见的对话框类型。它们的主要区别在于用户与对话框交互时,是否能够同时与其他窗口进行交互。

1.1 模态对话框

模态对话框会阻塞用户与父窗口的交互,直到用户关闭对话框或执行某些操作(例如点击“确定”或“取消”按钮)。在模态对话框弹出时,用户无法与其他窗口进行交互。模态对话框通常用于需要用户确认或选择某些信息的情况。

使用模态对话框,在 Qt 中,你可以通过 QDialog 类创建模态对话框,使用 exec() 函数来使对话框变为模态。

1.1.1 菜单栏和工具栏创建

先在设计中添加菜单栏和工具栏,并添加菜单项,见下:

在这里插入图片描述

1.1.2 模态对话框代码

在mainwindow.cpp源码文件中添加模态对话框代码,见下:

在这里插入图片描述

代码中参数解析:

exec():会启动事件循环,直到对话框关闭。

1.1.3 模态对话框效果

模态对话框效果见下:

在这里插入图片描述

1.2 非模态对话框

非模态对话框不会阻塞用户与父窗口的交互,用户可以同时与父窗口和对话框进行交互。这种对话框通常用于辅助信息展示、设置面板等场景。

使用非模态对话框
非模态对话框的创建方式与模态对话框相似,但它使用 show() 方法来显示对话框,而不是 exec()。

1.2.1 非模态对话框代码

在mainwindow.cpp源码文件添加非模态对话框代码见下:

在这里插入图片描述

1.2.2 非模态对话框效果

非模态对话框效果见下:

在这里插入图片描述

二、消息对话框

在 Qt 中,消息对话框(Message Box)用于向用户显示信息、警告、错误消息等,并接收用户的反馈(例如点击按钮)。Qt 提供了 QMessageBox 类,方便地实现不同类型的消息对话框。

QMessageBox 类
QMessageBox 是一个非常常用的对话框类,支持不同的类型、按钮和自定义内容。你可以通过它来显示 信息、警告、错误、确认 等类型的消息。

2.1 基本使用

QMessageBox 提供了一些静态方法来方便地显示常见类型的消息框,如信息框、警告框、错误框、确认框等。

示例:显示信息对话框

#include <QMessageBox>
#include <QPushButton>

void showMessage() {
    QMessageBox::information(nullptr, "Information", "This is an information message.");
}

参数解析:

QMessageBox::information() 用于显示信息对话框。
参数分别是:父窗口、标题、信息文本。

2.2 信息对话框 (information())

用于显示信息消息框。

2.2.1 代码

示例代码见下:

QMessageBox::information(parent, "Information", "This is an information message.");

在这里插入图片描述

2.2.2 效果展示

运行代码显示界面见下:

在这里插入图片描述

2.3 警告对话框 (warning())

用于显示警告消息框。

2.3.1 代码

示例代码见下:

QMessageBox::warning(this,"warning","警告");

在这里插入图片描述

2.3.2 效果展示

运行代码显示界面见下:

在这里插入图片描述

2.4 错误对话框 (critical())

用于显示错误消息框。

2.4.1 代码

示例代码见下:

QMessageBox::critical(this,"critical","错误");

在这里插入图片描述

2.4.2 效果展示

运行代码显示界面见下:

在这里插入图片描述

2.5 确认对话框 (question())

用于显示确认对话框,通常用于询问用户是否执行某个操作(例如确认保存文件)。

2.5.1 代码

示例代码见下:

 // 参数1:父亲  参数2:标题   参数3:提示内容  参数4:按键类型   参数5:默认关联回车按键
 // QMessageBox::question(this,"ques","提问");
 // QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel);  // 默认在save按钮上
 // QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);  // 默认在cancel按钮上
        if (QMessageBox::Save == QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
        {
            qDebug() << "选择的时保存";
        }
        else
        {
            qDebug() << "选择的是取消";
        }

在这里插入图片描述

2.5.2 效果展示

运行代码显示界面见下:

在这里插入图片描述

三、颜色对话框

3.1 颜色对话框 (QColorDialog)

QColorDialog 是用于选择颜色的对话框。用户可以通过此对话框选择颜色或使用调色板创建新的颜色。

3.2 代码

颜色对话框实例代码见下:

//颜色对话框
        QColor color = QColorDialog::getColor(QColor(255,0,0));  // 返回值就是颜色信息
        qDebug() << "r = " << color.red() << "g = " << color.green() << "b = " << color.blue();

参数解析:

QColorDialog::getColor() 打开颜色选择对话框。第一个参数是默认的颜色,第二个是父窗口(通常使用 this)。
color.isValid() 用于判断用户是否选择了有效的颜色。
可以通过 color.name() 获取颜色的十六进制表示。

在这里插入图片描述

3.3 效果展示

颜色对话框效果见下:

在这里插入图片描述

四、文件对话框

4.1 文件对话框 (QFileDialog)

QFileDialog 是一个用于选择文件的对话框。你可以用它来打开文件或保存文件。

4.2 代码

文本对话框的示例代码见下:

// 参数1:父亲  参数2:标题  参数3:默认打开路径  参数4:过滤文件格式
        // QFileDialog::getOpenFileName(this,"打开文件","E:\\code\\Qt\\Demo_6_QDilalog");   // 打开文件路径中的文件夹
        // QFileDialog::getOpenFileName(this,"打开文件","E:\\code\\Qt\\Demo_6_QDilalog","(*.cpp)"); // 将路径中的其它文件过滤,仅显示.cpp文件和文件夹
        QString str = QFileDialog::getOpenFileName(this,"打开文件","E:\\code\\Qt\\Demo_6_QDilalog","(*.cpp)");   // 返回值是选取的路径
        qDebug() << str;

参数解析:

QFileDialog::getOpenFileName() 打开文件选择对话框,允许用户选择一个文件。
第一个参数是父窗口,第二个是对话框标题,第三个是初始路径(为空时表示默认路径),第四个是文件过滤器(如 *.txt 或 *.* 等)。

在这里插入图片描述

4.3 效果展示

运行上面代码,会打开电脑本地对应路径下的文件件,见下:

在这里插入图片描述

五、字体对话框

5.1 字体对话框(QFontDialog)

QFontDialog 是一个用于选择字体的对话框。用户可以选择字体、大小、样式等。

5.2 代码

字体对话框示例代码见下:

  //字体对话框
        bool flag;
        // QFontDialog::getFont(&flag,QFont("华为彩云",36));
        QFont font = QFontDialog::getFont(&flag,QFont("华为彩云",36));
        // qDebug() << "字体:" << font.family() << "字号:"<< font.pointSize() << "是否加粗:" << font.bold() << "是否倾斜:"<< font.italic();
        qDebug() << "字体:" << font.family().toUtf8().data() << "字号:"<< font.pointSize() << "是否加粗:" << font.bold() << "是否倾斜:"<< font.italic();
    });

参数解析:

QFontDialog::getFont() 打开字体选择对话框,第一个参数是一个布尔值,表示用户是否点击了“OK”按钮。

在这里插入图片描述

5.3 效果展示

字体对话框效果见下:

在这里插入图片描述

六、代码获取

配套教程的源码包获取方式已在文章结尾提供,扫码到「视觉研坊」中回复关键字:Qt中对话框,会自动回复下载链接。

下载解压后的样子见下:

在这里插入图片描述

七、总结

以上就是Qt中对话框:模态和非模态对话框、消息对话框、颜色对话框、文件对话框和字体对话框的语法及用法,希望能帮你理解。

感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖

关注下面「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉研坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值