`
coolsooner
  • 浏览: 1374039 次
文章分类
社区版块
存档分类
最新评论

Qt对话框之QMessageBox

 
阅读更多
这次来说一下QMessageBox以及类似的几种对话框。其实,我们已经用过QMessageBox了,就在之前的几个程序中。不过,当时是大略的说了一下,现在专门来说说这几种对话框。
先来看一下最熟悉的QMessageBox::information。我们在以前的代码中这样使用过:
QMessageBox::information(NULL,"Title","Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
下面是一个简单的例子:
现在我们从API中看看它的函数签名:
staticStandardButton QMessageBox::information ( QWidget * parent,constQString & title,constQString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
首先,它是static的,所以我们能够使用类名直接访问到(怎么看都像废话…);然后看它那一堆参数,第一个参数parent,说明它的父组件;第二个参数title,也就是对话框的标题;第三个参数text,是对话框显示的内容;第四个参数buttons,声明对话框放置的按钮,默认是只放置一个OK按钮,这个参数可以使用或运算,例如我们希望有一个Yes和一个No的按钮,可以使用QMessageBox::Yes |QMessageBox::No,所有的按钮类型可以在QMessageBox声明的StandarButton枚举中找到;第五个参数defaultButton就是默认选中的按钮,默认值是NoButton,也就是哪个按钮都不选中。这么多参数,豆子也是记不住的啊!所以,我们在用QtCreator写的时候,可以在输入QMessageBox::information之后输入(,稍等一下,QtCreator就会帮我们把函数签名显示在右上方了,还是挺方便的一个功能!
Qt提供了五个类似的接口,用于显示类似的窗口。具体代码这里就不做介绍,只是来看一下样子吧!
QMessageBox::critical(NULL,"critical","Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
QMessageBox::warning(NULL,"warning","Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
QMessageBox::question(NULL,"question","Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
QMessageBox::about(NULL,"About","About this application");
请注意,最后一个about()函数是没有后两个关于button设置的按钮的!
QMessageBox对话框的文本信息时可以支持HTML标签的。例如:
QMessageBox::about(NULL,"About","About this <font color='red'>application</font>");
运行效果如下:
如果我们想自定义图片的话,也是很简单的。这时候就不能使用这几个static的函数了,而是要我们自己定义一个QMessagebox来使用:
QMessageBox message(QMessageBox::NoIcon,"Title","Content with icon.");
message.setIconPixmap(QPixmap("icon.png"));
message.exec();
这里我们使用的是exec()函数,而不是show(),因为这是一个模态对话框,需要有它自己的事件循环,否则的话,我们的对话框会一闪而过哦(感谢laetitia提醒).

需要注意的是,同其他的程序类似,我们在程序中定义的相对路径都是要相对于运行时的.exe文件的地址的。比如我们写"icon.png",意思是是在.exe的当前目录下寻找一个"icon.png"的文件。这个程序的运行效果如下:
还有一点要注意,我们使用的是png格式的图片。因为Qt内置的处理图片格式是png,所以这不会引起很大的麻烦,如果你要使用jpeg格式的图片的话,Qt是以插件的形式支持的。在开发时没有什么问题,不过如果要部署的话,需要注意这一点。
最后再来说一下怎么处理对话框的交互。我们使用QMessageBox类的时候有两种方式,一是使用static函数,另外是使用构造函数。
首先来说一下static函数的方式。注意,static函数都是要返回一个StandardButton,我们就可以通过判断这个返回值来对用户的操作做出相应。
QMessageBox::StandardButton rb = QMessageBox::question(NULL,"Show Qt","Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
if(rb == QMessageBox::Yes)
{
QMessageBox::aboutQt(NULL,"About Qt");
}
如果要使用构造函数的方式,那么我们就要自己运行判断一下啦:
QMessageBox message(QMessageBox::NoIcon,"Show Qt","Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, NULL);
if(message.exec() == QMessageBox::Yes)
{
QMessageBox::aboutQt(NULL,"About Qt");
}
QMessageBox::warning(NULL,QObject::tr("My Application"),QObject::tr("The document has been modified.\n""Do you want to save your changes?"),QMessageBox::Save | QMessageBox::Discard| QMessageBox::Cancel,QMessageBox::Save);
QMessageBox::SaveQMessageBox::DiscardQMessageBox::Cancel这些枚举描述的标准按钮标志。每个按钮有一个定义。QMessageBox::Save是默认选择的按钮,点击Enter键默认是选择保存。

可以自己定义一个QMessageBox对象的,属性可以根据自己的要求进行设置,如下:
QMessageBox box;
box.setWindowTitle(tr("警告"));
box.setIcon(QMessageBox::Warning);
box.setText(curFile+tr("尚未保存,是否保存?"));
box.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
if(box.exec()==QMessageBox::Yes)
    do_file_Save();

分享到:
评论

相关推荐

    Qt对话框美化(含TableWidget)

    本主题将深入探讨如何美化Qt对话框,特别是涉及QTableWidget的使用以及按钮的美化。QTableWidget是Qt的容器控件,用于显示二维表格数据,它允许用户编辑、添加和删除数据,使得在对话框中展示复杂信息变得更加直观。...

    Qt内置对话框

    QMessageBox是Qt中最基本的对话框,用于显示简单的消息、警告、询问和错误提示。它可以包含按钮,如“确定”、“取消”、“是”、“否”等,以获取用户反馈。 2. **QFileDialog** QFileDialog用于打开和保存文件...

    QT对话框实例,各类对话框

    在这个“QT对话框实例”中,我们将深入探讨QT中的各类对话框及其使用方法,主要针对的是QT5.6.3版本。 首先,我们来看模态对话框(Modal Dialog)。模态对话框是一种阻塞用户界面的对话框,用户必须先关闭该对话框...

    Qt标准对话框设置,设置字体、调色板、进度条

    常见的标准对话框有消息框(QMessageBox)、文件对话框(QFileDialog)、颜色选择对话框(QColorDialog)和字体选择对话框(QFontDialog)等。这些对话框提供了预定义的功能,使得开发者可以快速创建用户友好的界面...

    qt 内建对话框

    Qt内建对话框是Qt库中的重要组成部分,用于在图形用户界面(GUI)应用程序中提供标准的用户交互功能。这些对话框通常用于执行常见的任务,如打开或保存文件、显示消息、设置选项等,为用户提供统一且直观的操作体验...

    day3 QT对话框(标准对话框演示代码)

    "day3 QT对话框(标准对话框演示代码)"这个标题表明我们将探讨QT中的对话框(Dialog)组件,这些对话框通常用于用户与应用程序进行交互,比如保存、打开文件、输入信息等。 在QT中,标准对话框主要包括以下几个...

    gotocell2.rar_qt 对话框_对话框

    QDialog类是所有对话框的基础类,提供了基本的对话框行为,并可以作为其他对话框类的基类,如QInputDialog、QMessageBox等。 在"对话框编程2"这个范例中,我们可能会看到如何创建一个包含按钮的对话框,并实现这些...

    Qt_StepByStep.rar_Qt消息框_qt 对话框_qt 界面

    接下来,我们讨论Qt对话框。对话框是一种临时的窗口,用于与用户进行更复杂的交互,如输入数据、选择文件或设置配置。Qt提供了一些内置的对话框类,如`QFileDialog`(用于选择文件或目录)、`QColorDialog`(选择...

    qt5信息提示框QMessageBox用法 - 莫水千流 - 博客园1

    在Qt5中,`QMessageBox` 是一个非常实用的类,用于显示各种类型的信息提示框,如警告、错误、询问等。这些提示框通常用于向用户显示简短的消息,并接收用户的简单反馈,如确认、取消或选择。在本文中,我们将深入...

    QT实例 基本对话框

    QMessageBox 是QT中最基础的对话框之一,用于显示简单的警告、询问或信息提示。例如,当用户进行错误操作或者需要确认某项操作时,可以使用QMessageBox来提供反馈。它支持多种按钮配置,如"确定"、"取消"、"是"、...

    qt 对话框的进阶.

    本篇将深入探讨Qt对话框的进阶用法,帮助你更好地利用这些功能增强应用程序的用户界面。 ### 1. 基本对话框类 Qt提供了多种预定义的对话框类,包括`QFileDialog`(文件对话框)、`QMessageBox`(消息框)、`...

    Qt标准对话框

    3. **消息对话框(QMessageBox)**:Qt的消息对话框是向用户展示简单信息、警告或确认操作的快捷方式。QMessageBox类提供了多种类型,如信息、警告、询问、错误和致命错误。开发者可以通过`QMessageBox::information...

    Qt之QMessageBox 自定消息提示框(二)

    在Qt编程环境中,QMessageBox是用于显示简单对话框的类,通常用来向用户展示警告、询问或信息。然而,有时开发者可能需要自定义更复杂的提示框以满足特定需求,这时可以创建自己的消息框类,就像"Qt之QMessageBox 自...

    QT第一课_对话框小程序

    在QT中,我们可以使用QDialog类来创建自定义对话框,或者使用预定义的对话框类,例如QFileDialog、QMessageBox等。 首先,让我们了解一下QDialog的基本用法。QDialog是所有对话框类的基类,你可以通过继承QDialog并...

    Qt基本对话框实现

    在Qt库中,标准对话框是用户界面设计中不可或缺的一部分,它们为用户提供了一种与应用程序交互的便捷方式。Qt提供了多种内置的对话框类,使得开发者可以轻松地创建各种常见类型的对话框,如文件选择、颜色选取、字体...

    Pyqt5如何让QMessageBox按钮显示中文示例代码

    在Pyqt5开发中,`QMessageBox`是一种非常常用的对话框组件,用于向用户展示消息或请求用户的输入。它支持多种类型的对话框,如提示、警告、错误、确认等。默认情况下,`QMessageBox`中的按钮(例如“确定”、“取消...

    Qt例程源代码QMessageBox.7z

    在Qt库中,`QMessageBox`是一个非常实用的类,用于显示简单的对话框,如警告、错误、询问和信息提示。这个"Qt例程源代码QMessageBox.7z"压缩包很可能是包含了一些使用`QMessageBox`的示例代码,帮助开发者了解如何在...

    Qt基本对话框及实现各个功能的文档

    `QMessageBox`是Qt中用于显示消息的对话框,支持多种类型的提示,如信息、警告、确认、错误等。开发者可以通过静态函数如`information()`, `question()`, `warning()`, `critical()`来创建不同类型的对话框,并提供...

    qt全部对话框示例代码alldialog.rar

    "qt全部对话框示例代码alldialog.rar"这个压缩包很可能包含了Qt库中各种对话框的示例代码,这对于我们理解和学习如何在实际项目中使用Qt对话框是非常有价值的。 首先,让我们来探讨一下Qt中的主要对话框类型: 1. ...

    QT-04-qt菜单处理 QMenu及QAction的组合使用

    QMessageBox则是QT提供的一种用于显示消息对话框的类,通常用于向用户提供警告、询问或者确认信息。它支持多种类型的对话框,如信息对话框(QMessageBox::Information)、警告对话框(QMessageBox::Warning)、询问...

Global site tag (gtag.js) - Google Analytics