第三篇:对话框窗口部件 QDialog

这篇具有很好参考价值的文章主要介绍了第三篇:对话框窗口部件 QDialog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对话框窗口部件 QDialog

对话框(Dialog)是计算机图形用户界面(GUI)中的一种常见窗口类型,通常用于与用户进行交互、获取信息、提供反馈或执行特定任务。对话框的主要目的是与用户进行短期的、有限的交互,以完成特定的操作或任务,然后将控制返回给应用程序的主窗口或上下文。

模态与非模态对话框

按照运行对话框时是否还可以和该程序的其他窗口进行交互,对话框常被分为两类:模态(model)和非模态(modeless)。

模态对话框(model dialog)

模态对话框阻塞了应用程序的主窗口或其他父窗口,直到用户完成对话框中的操作或关闭对话框。用户必须在对话框上完成交互后才能继续与应用程序交互。典型的模态对话框包括文件选择框、消息框、设置对话框等。

方法 1:exec()
QDialog dlg();
dlg.exec();

此方法实现的为全模态对话框,不仅会阻塞应用程序窗口,当调用 exec() 函数时,代码将不会继续向下执行,只有当对话框关闭才会返回。

方法 2:setModel()
QDialog dlg();
dlg.setModel(true);
dlg.show();

此方法实现的为半模态对话框,只会阻塞应用程序窗口,代码仍然继续向下执行。

方法 3:setWindowModality()
QDialog dlg();
dlg.setWindowModality(Qt::ApplicationModal);
dlg.show();

使用此方法实现的模态对话框也是半模态的。

setWindowModality()的参数设置要阻塞的窗口类型:

枚举值 说明
Qt::NonModal 0 非模态,不阻塞任何窗口
Qt::WindowModal 1 模态,阻塞它的父窗口,所有的祖先窗口以及他们的子窗口
Qt::NonModal 2 模态,阻塞应用程序所有的窗口

非模态对话框(modeless dialog)

非模态对话框与应用程序的其他部分同时存在,用户可以在对话框和主窗口之间自由切换。用户可以同时打开多个非模态对话框,而不必等待一个对话框完成才能处理其他任务。典型的非模态对话框包括查找和替换对话框。

QDialog dlg();
dlg.show();

标准对话框

Qt 提供了一些常用的对话框类型,它们全部继承自 QDialog 类,并增加了自己的特色功能,例如颜色、文件、字体、输入、提示、进度对话框等。此处只列举颜色、文件对话框和消息对话框,其余留给你自己练习!

颜色对话框

颜色对话框类 QColorDialog 提供了一个可以获取指定颜色的对话框部件。

#include <QColorDialog>

QColor color = QColorDialog::getColor(Qt::red, nullptr, QObject::tr("颜色对话框"));
qDebug() << "color" << color;

QColorDialog::getColor 的 3 个参数分别是:设置初始颜色、指定父窗口和设置对话框标题。

运行结果如图:

第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++

其实 QColorDialog::getColor 函数声明是这样的:


QColor 
getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions())

聪明的你可能已经发现了,这不是 4 个参数吗?咱咋没用呢?

options 是指定影响颜色对话框外观的各种选项,QColorDialog::ColorDialogOption 具体见下表:

枚举值 说明
QColorDialog::ShowAlphaChannel 1 允许用户选择颜色的alpha组件
QColorDialog::NoButtons 2 不显示“确定”和“取消”按钮。(对于”live dialog”很有用。)
QColorDialog::DontUseNativeDialog 4 使用Qt的标准颜色对话框,而不是操作系统的本机颜色对话框

接下来我们使用 QColorDialog::ShowAlphaChannel 来显示 alpha 设置。运行程序查看结果如图所示:

第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++

文件对话框

文件对话框 QFileDialog 类提供了一个允许用户选择文件或文件夹的对话框。

#include <QFileDialog>

QString fileName = QFileDialog::getOpenFileName(nullptr, QObject::tr("Open File"), "D:\\", QObject::tr("文本文档(*.txt)"));
qDebug() << "fileName:" << fileName;

QFileDialog::getOpenFileName 的 4 个参数的作用分别是:指定父窗口、设置对话框标题、指定默认打开目录路径和设置文件类型过滤器。

运行结果如图:

第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++

其实 QFileDialog::getOpenFileName 函数声明是这样的:

QString QFileDialog::getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

selectedFilter 用于存储用户选择的过滤器的名称,可以设置默认选择哪种过滤器。
options 用于指定对话框的选项。详见 QFileDialog::Options 枚举。

注意:getOpenFileName() 只能选择单一文件,要同时选择多个文件,则可以使用 getOpenFileNames() 函数。

消息对话框

消息对话框 QMessageBox 类提供了一个模态的对话框来通知用户一些信息,或者向用户提出一个问题并且获取答案。

// 提示对话框
int ret = QMessageBox::information(nullptr, QObject::tr("提示"), QObject::tr("这是一个提示对话框"), QMessageBox::Ok);
if (ret == QMessageBox::Ok)
    qDebug() << QObject::tr("提示");

// 警告对话框
int ret2 = QMessageBox::warning(nullptr, QObject::tr("警告"), QObject::tr("这是一个警告对话框"), QMessageBox::Abort);
if (ret2 == QMessageBox::Abort)
    qDebug() << QObject::tr("警告");

// 错误对话框
int ret3 = QMessageBox::critical(nullptr, QObject::tr("错误"), QObject::tr("这是一个错误对话框"), QMessageBox::YesAll);
if (ret3 == QMessageBox::YesAll)
    qDebug() << QObject::tr("错误");

// 关于对话框
QMessageBox::about(nullptr, QObject::tr("关于"), QObject::tr("这里是bmseven的博客"));

// 提问对话框,带有Yes和No按钮
QMessageBox::StandardButton reply;
reply = QMessageBox::question(nullptr, QObject::tr("提问"), QObject::tr("你确定要执行此操作吗?"),
                                QMessageBox::Yes | QMessageBox::No);
if (reply == QMessageBox::Yes) {
    qDebug() << QObject::tr("用户选择了Yes。");
} else {
    qDebug() << QObject::tr("用户选择了No。");
}

运行结果如图:

第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++
第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++
第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++
第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++
第三篇:对话框窗口部件 QDialog,qt从入门到项目实战,qt,c++
这里创建了 5 个不同类型的消息对话框,分别拥有不同的图标和提示音(这个是操作系统设置的),几个参数分别用于设置父窗口、标题栏、显示信息和拥有的按钮。

这里使用的都是 QMessageBox 类提供的标准按钮。返回值也都是 QMessageBox::StandardButton 枚举类型的值,唯独关于对话框 about() 函数没有返回值,因为它默认只有一个按钮。文章来源地址https://www.toymoban.com/news/detail-666659.html

到了这里,关于第三篇:对话框窗口部件 QDialog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QDialog实现圆角对话框的三种方式

    方式一:通过QBitMap设置控件有效绘制区域(缺点:容易产生锯齿,锯齿来自于QBitMap) Dialog继承Qdialog 设置无边框及背景透明 重写paintEvent 参考链接:https://blog.csdn.net/ajcjldd/article/details/127306630 方式二:QPainter直接绘制圆角矩形(缺点:无法使用qss方式配置背景色,需要根据主

    2024年02月06日
    浏览(46)
  • 嵌入式Qt 对话框及其类型 QDialog

    对话框是与用户进行简短交互的顶层窗口。 QDialog是Qt中所有对话框窗口的基类。 QDialog继承与QWidfet是一种容器类型的组件。  QDialog的意义: QDialog作为一种专业的交互窗口而存在。 QDialog不能作为子部部件嵌入其他容器中。 QDialog是定制了窗口式样的特殊的QWidget。 模态对话框

    2024年04月11日
    浏览(40)
  • QT基础教程之五对话框QDialog

    对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。 Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常会设计一个

    2024年02月10日
    浏览(35)
  • Opencv显示图片(MFC基于对话框窗口)

    #1.编辑对话框按钮,修改各个按钮窗口ID和绑定变量 picture 控件 “打开图片”按钮控件 #2.编写显示图片函数 void DrawMat(cv::Mat img, UINT nID); .h文件进行声明 .cpp进行定义 #3.定义CString fun_LoadImg();函数 .h文件进行声明 .cpp文件进行定义 #4.双击“打开图片”按钮 系统自动弹出响应函数

    2024年04月15日
    浏览(50)
  • PyQt5 框架搭建+实战(多窗口打开,文件对话框)

    1.Qt设计师界面创建主窗口 2.转化成py文件 3.建立一个主窗口类,继承Qwidget和Qt设计师生成的UI类 4.写一个main函数入口,创建app,创建主窗口类实例,show(), app.exec() 我们不要在Qt设计师生成的界面上去增加我们的代码,因为这个界面我们一直都需要修改,修改后生成新的py代码

    2024年02月02日
    浏览(58)
  • Qt编程基础 | 第三章-控件 | 3.3、对话框

    对话框:在主窗口中操作,有可能触发某一个行为动作,会弹出一个新的对话窗口,解决一个临时性的会话,在对话窗口中执行某一个功能。QDialog可以作为自定义对话框的基类,同时Qt也提供了一些标准对话框,例如:QFileDialog、QColorDialog等,下面是QDialog类的继承结构,如下

    2024年02月06日
    浏览(63)
  • easyx学习笔记(六):播放音乐,修改窗口标题,弹出对话框

    学习视频【C/C++/EasyX】学编程,做游戏,小白快速入门图形编编程 目录 播放音乐 修改窗口标题,弹出对话框 为了实现用c语言播放音乐,需要用到windos的一个API         1.需要包含头文件windos.h和mmsystem.h(如果已经包含graphics.h则无需包含windos.h;        mmsystem.h需要放在graph

    2024年02月06日
    浏览(53)
  • Python 图形化界面基础篇:使用弹出窗口和对话框

    在开发图形用户界面( GUI )应用程序时,与用户进行交互的一种常见方式是通过弹出窗口和对话框。这些弹出窗口允许用户输入数据、进行选择、查看信息等。 Python 的 Tkinter 库和一些第三方库提供了创建和管理弹出窗口和对话框的方法。在本篇博客中,我们将深入探讨如何

    2024年02月03日
    浏览(86)
  • Rust UI开发(三):iced如何打开图片(对话框)并在窗口显示图片?

    注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 这是一个系列博文,本文是第三篇,前两篇的链接: 1、Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符 2、Rust UI开发(二):iced中如何为窗口添加icon图标 本篇是

    2024年02月04日
    浏览(85)
  • QT中在MainWindow(主窗口)中创建Dialog(对话框)两种方式优缺点对比

    新建窗口工程 利用ui工具在Window中创建三个按钮 打开对话框 关闭对话框 改变三个按钮的名称 openDialog closeDialog 在工程中添加QDialog类,名字是Dialog 在Dialog中创建label控件,写上HelloWorld 最关键的一步,在window的类中创建Dialog私有对象指针 在window.cpp中编写指针myDialog的初始化代

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包