Qt QMessageBox用法详解_qt message(1)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

                                 StandardButtons buttons = Ok,
                                 StandardButton defaultButton = NoButton)

各个参数的含义以及返回值的含义,都与 information() 函数相同,这里不再重复赘述。


例如,使用 critical() 函数实现图 3 所示的对话框,实现代码为:



QMessageBox::StandardButton result=QMessageBox::critical(&widget, “Title”,“text”);


其中,widget 是我们创建好的 QWidget 窗口,创建好的 critical 对话框会显示在 widget 窗口的前面。


##### 3) question消息对话框


question 对话框常用于向用户提出问题并接收用户的答案,它的外观如下图所示:


![img](https://img-blog.csdnimg.cn/img_convert/685203367d348a3485eace00cfb650f4.gif)  
 图 4 question消息对话框


项目中使用 question 对话框,可以直接调用 QMessageBox 类的 question() 静态成员方法,该方法的语法格式为:



StandardButton QMessageBox::question(QWidget *parent,
const QString &title,
const QString &text,
StandardButtons buttons = StandardButtons( Yes | No ),
StandardButton defaultButton = NoButton)


各个参数的含义以及返回值的含义,都与 information() 函数相同。


例如,使用 question() 函数实现图 4 所示的对话框,实现代码为:



QMessageBox::StandardButton result=QMessageBox::question(&widget, “Title”,“text”);


其中,widget 是我们创建好的 QWidget 窗口,创建好的 question 对话框会显示在 widget 窗口的前面。


##### 4) warning消息对话框


warining 对话框常用于向用户显示一些警告信息,它的外观如下图所示:


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ZVOhUXS-1669281066564)(http://c.biancheng.net/uploads/allimg/211028/16411a1O-4.gif)]  
 图 5 warning消息对话框


项目中使用 warning 对话框,可以直接调用 QMessageBox 类的 warning() 静态成员方法,该方法的语法格式为:



StandardButton QMessageBox::warning(QWidget *parent,
const QString &title,
const QString &text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton)


各个参数的含义以及返回值的含义,都与 information() 函数相同。


例如,使用 warning() 函数实现图 5 所示的对话框,实现代码为:



QMessageBox::StandardButton result=QMessageBox::warning(&widget, “Title”,“text”);


其中,widget 是我们创建好的 QWidget 窗口,创建好的 warning 对话框会显示在 widget 窗口的前面。


##### 5) about和aboutQt对话框


about 对话框常常作为介绍某个产品或某项功能的临时窗口,它的外观如下图所示:


![img](https://img-blog.csdnimg.cn/img_convert/5e953a5c9e33c4597c9c65ae3cf855f6.gif)  
 图 6 about消息对话框


注意,about 对话框没有固定的图标,它显示的图标可能来自父窗口、包含父窗口的顶层窗口等,也可能使用和 information 对话框相同的图标。


项目中使用 about 对话框,直接调用 QMessageBox 类提供的 about() 静态成员方法即可,该方法的语法格式如下:


void QMessageBox::about(QWidget \*parent, const QString &title, const QString &text)


各个参数的含义和与 information() 函数相同。和前面的几种对话框不同,about对话框中只包含一个默认的 Ok 按钮,且 about() 函数没有返回值。


aboutQt 可以看做是 about 对话框的一个具体实例,它只能显示 Qt 的介绍信息,如下图所示:


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UpQ87vv1-1669281066567)(http://c.biancheng.net/uploads/allimg/211028/1641196461-6.gif)]  
 图 7 aboutQt对话框


项目中使用 aboutQt 对话框,直接调用 QMessageBox 类提供的 aboutQt() 静态成员方法即可,该函数的语法格式如下:


void QMessageBox::aboutQt(QWidget \*parent, const QString &title = QString())


我们只能设置 aboutQt 对话框的 parent 父窗口和 title 标题,不能自定义它的内容。所以在实际场景中,aboutQt() 对话框很少使用。


### 自定义QMessageBox对话框


以上 6 种通用的 QMessageBox 对话框,界面上的图片无法修改,按钮上的文字也无法修改(例如无法将 OK、No 改成中文)。如果想修改它们,就需要自定义一个 QMessageBox 对话框。


##### QMessageBox对话框的创建


程序中创建 QMessageBox 对象,必须先引入`<QMessageBox>`头文件。QMessageBox 类提供了两个构造函数,分别是:



QMessageBox::QMessageBox(QWidget *parent = Q_NULLPTR)
QMessageBox::QMessageBox(Icon icon,
const QString &title,
const QString &text,
StandardButtons buttons = NoButton,
QWidget *parent = Q_NULLPTR,
Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)


第一个构造函数可以创建一个“空白”对话框,即对话框中不包含任何文本和按钮。当然,通过调用 QMessageBox 类提供的成员方法,可以向“空白”对话框中添加各种元素(图标、文本、按钮等)。


第二个构造函数中,各个参数的含义是:


* icon:指定对话框中的图片。Icon 是 QMessageBox 类中定义的枚举类型,内部包含 QMessageBox::NoIcon、QMessageBox::Question、QMessageBox::Information、QMessageBox::Warning、QMessageBox::Critical 几个值,分别表示:不指定图片、question对话框的图片(图 4)、information对话框的图片(图 2)、warning对话框的图片(图 5)、critical对话框的图片(图 3)。
* title:指定对话框的标题;
* text:指定对话框中显示的文本信息;
* buttons:指定对话框中包含的的按钮,可选值如表 1 所示。
* parent:指定对话框的父窗口;
* f:指定对话框的属性。WindowFlags 是 Qt 提供的枚举类型,内部包含的值有很多,有的用来指定对话框的用途(比如 Qt::Dialog 表示对话框窗口),有的用来指定对话框的外观(比如 MSWindowsFixedSizeDialogHint 表示给对话框添加一个细的边框)


举个简单的例子:



#include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); //创建 QMessageBox 类对象 QMessageBox MyBox(QMessageBox::Question,“Title”,“text”,QMessageBox::Yes|QMessageBox::No); //使 MyBox 对话框显示 MyBox.exec(); return a.exec();}


程序中创建了一个 MyBox 对话框,通过调用 QMessageBox 提供的 exec() 方法,可以使 MyBox 对话框弹出。运行程序可以发现,MyBox 对话框的外观和图 4 的 question 对话框完全一样。


##### QMessageBox对话框的使用


QMessageBox 类提供了很多功能实用的成员方法,方便我们快速地制作出实际场景需要的对话框。


下表给大家罗列了常用的一些 QMessageBox 类成员方法:


表 2 QMessageBox 常用成员方法 成员方法 功 能




|  |  |
| --- | --- |
| void QMessageBox::setWindowTitle(const QString &title) | 设置对话框的标题。 |
| void setText(const QString &text) | 设置对话框中要显示的文本。 |
| void setIconPixmap(const QPixmap &pixmap) | 设置对话框中使用的图片。 |
| QAbstractButton \*QMessageBox::clickedButton() const | 返回用户点击的按钮。 |
| QPushButton \*QMessageBox::addButton(const QString &text, ButtonRole role) | 向对话框中添加按钮,text 为按钮的文本,role 是 QMessageBox::ButtonRole 枚举类型的变量,用于描述按钮扮演的角色,它的可选值有 QMessageBox::AcceptRole(同 OK 按钮)、QMessageBox::RejectRole(同 Cancel 按钮)等。 |
| int QMessageBox::exec() | 使当前对话框弹出,除非用户关闭对话框,否则对话框将一直存在。此外,当对话框中使用的都是 Qt 提供的按钮时,该方法可以监听用户点击的是哪个按钮,并将该按钮对应的枚举值返回;如果对话框中包含自定义按钮,需要借助 clickedButton() 方法确定用户点击的按钮。 |


举个简单的例子:



#include #include #include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QMessageBox MBox; MBox.setWindowTitle(“QMessageBox自定义对话框”); MBox.setText(“这是一个自定义的对话框”); MBox.setIconPixmap(QPixmap(“C:\Users\xiexuewu\Desktop\icon_c.png”)); QPushButton agreeBut = MBox.addButton(“同意”, QMessageBox::AcceptRole); MBox.exec(); if (MBox.clickedButton() == (QAbstractButton)agreeBut) { //在 Qt Creator 的输出窗口中输出指定字符串 qDebug() << “用户点击了同意按钮”; } return a.exec();}


程序运行结果如图 8 所示,点击“同意”按钮后,我们会在 Qt Creator 的输出窗口中看到“用户点击了同意按钮”。


![img](https://img-blog.csdnimg.cn/img_convert/eb249c5ab01b48d306fc68517b424e43.gif)  
 图 8 自定义的 QMessageBox 对话框


##### QMessageBox的信号和槽


操作 QMessageBox 对话框,最常用的信号函数是 buttonClicked() 函数,最常用的槽函数是 exec() 函数,它们的语法格式和功能如下表所示。


表 3 QMessageBox信号和槽 信号函数 功 能 槽函数 功 能





![img](https://img-blog.csdnimg.cn/img_convert/be1aad7071df769dde55a909e23eed80.png)
![img](https://img-blog.csdnimg.cn/img_convert/41b3bebea645a060e69d344e2fbdc15a.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QMessageBox是一个用于显示消息框的Qt类,可以用于显示警告、错误、信息和询问等类型的消息框。下面是QMessageBox的基本用法: ```python from PyQt5.QtWidgets import QMessageBox # 显示信息框 QMessageBox.information(self, "标题", "内容") # 显示警告框 QMessageBox.warning(self, "标题", "内容") # 显示错误框 QMessageBox.critical(self, "标题", "内容") # 显示询问框 reply = QMessageBox.question(self, "标题", "内容", QMessageBox.Yes | QMessageBox.No) if reply == QMessageBox.Yes: print("点击了Yes按钮") else: print("点击了No按钮") ``` 其中,`self`表示所在的窗口对象,`"标题"`和`"内容"`分别为消息框的标题和内容。询问框需要通过`QMessageBox.question`方法获取用户的选择,返回值为用户点击的按钮类型,可以通过比较`QMessageBox.Yes`和`QMessageBox.No`来确定用户的选择。 另外,还可以通过设置不同的icon来显示不同类型的消息框,例如: ```python # 显示信息框 QMessageBox.information(self, "标题", "内容", QMessageBox.Ok, QMessageBox.Ok) # 显示警告框 QMessageBox.warning(self, "标题", "内容", QMessageBox.Ok, QMessageBox.Ok) # 显示错误框 QMessageBox.critical(self, "标题", "内容", QMessageBox.Ok, QMessageBox.Ok) # 显示询问框 reply = QMessageBox.question(self, "标题", "内容", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes) ``` 其中,第四个参数为标准按钮类型,第五个参数为默认按钮类型,通过设置不同的参数可以改变按钮的显示和默认选中的按钮。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值