Qt QMessageBox详解

一.QMessageBox介绍

文本消息显示框(message box)向用户发出情况警报信息并进一步解释警报或向用户提问,以及可选的详细文本以在用户请求时提供更多数据。

枚举

枚举枚举值
enumButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole }
enumIcon { NoIcon, Question, Information, Warning, Critical }
enumStandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask }
flagsStandardButtons

属性

属性名称类型
detailedTextQString
standardButtonsStandardButtons
iconIcon
iconPixmapQPixmap
informativeTextQString
textQString
textFormatQt::TextFormat
textInteractionFlagsQt::TextInteractionFlags

函数

返回值函数原型说明
QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::DialogQt::MSWindowsFixedSizeDialogHint)
QMessageBox(QWidget *parent = nullptr)构造函数
virtual~QMessageBox()析构函数
voidaddButton(QAbstractButton *button, QMessageBox::ButtonRole role)添加按钮到消息框中
QPushButton *addButton(const QString &text, QMessageBox::ButtonRole role)添加按钮到消息框中
QPushButton *addButton(QMessageBox::StandardButton button)添加按钮到消息框中
QAbstractButton *button(QMessageBox::StandardButton which) const返回与标准按钮对应的指针,如果此消息框中不存在标准按钮,则返回nullptr
QMessageBox::ButtonRolebuttonRole(QAbstractButton *button) const返回指定按钮的按钮角色。如果按钮为nullptr或尚未添加到消息框,则此函数返回InvalidRole。
QList<QAbstractButton *>buttons() const返回已添加到消息框中的所有按钮的列表。
QCheckBox *checkBox() const返回对话框上显示的复选框。如果未设置任何复选框,则为nullptr。
QAbstractButton *clickedButton() const返回用户单击的按钮,如果用户按Esc键且未设置转义按钮,则返回nullptr。
QPushButton *defaultButton() const返回应该是消息框默认按钮的按钮。如果未设置默认按钮,则返回nullptr。
QStringdetailedText() const保存要显示在详细信息区域中的文本。
QAbstractButton *escapeButton() const返回按下转义时激活的按钮。
QMessageBox::Iconicon() const保存消息框的图标
QPixmapiconPixmap() const保存当前图标
QStringinformativeText() const包含为消息提供更完整描述的信息性文本
voidopen(QObject *receiver, const char *member)打开对话框并将其 finished()或 buttonClicked()信号连接到接收器和成员指定的插槽。如果slot-in成员的第一个参数有一个指针,则连接到 buttonClicked(),否则连接到finished()。
voidremoveButton(QAbstractButton *button)从按钮框中删除按钮而不删除它。
voidsetCheckBox(QCheckBox *cb)设置消息对话框上的复选框cb。消息框获取复选框的所有权。参数cb可以是nullptr,以从消息框中删除现有复选框。
voidsetDefaultButton(QPushButton *button)将消息框的默认按钮设置为按钮。
voidsetDefaultButton(QMessageBox::StandardButton button)将消息框的默认按钮设置为按钮。
voidsetDetailedText(const QString &text)保存要显示在详细信息区域中的文本。
voidsetEscapeButton(QAbstractButton *button)将按下Escape键时激活的按钮设置为按钮。
voidsetEscapeButton(QMessageBox::StandardButton button)将按下Escape键时激活的按钮设置为按钮。
voidsetIcon(QMessageBox::Icon)保存消息框的图标
voidsetIconPixmap(const QPixmap &pixmap)保存消息框的图标
voidsetInformativeText(const QString &text)保存要显示的消息框文本
voidsetStandardButtons(QMessageBox::StandardButtons buttons)根据文本格式设置(QMessageBox::textFormat),文本将被解释为纯文本或富文本。默认设置为 Qt::AutoText,,即消息框将尝试自动检测文本的格式。
voidsetText(const QString &text)保存要显示的消息框文本
voidsetTextFormat(Qt::TextFormat format)保存消息框显示的文本格式
voidsetTextInteractionFlags(Qt::TextInteractionFlags flags)
voidsetWindowModality(Qt::WindowModality windowModality)
voidsetWindowTitle(const QString &title)
QMessageBox::StandardButtonstandardButton(QAbstractButton *button) const返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回NoButton。
QMessageBox::StandardButtonsstandardButtons() const返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回NoButton。
QStringtext() const保存要显示的消息框文本
Qt::TextFormattextFormat() const保存消息框显示的文本格式
Qt::TextInteractionFlagstextInteractionFlags() const

二.QMessageBox的用法

1.导入QMessage库

#include <QMessageBox>

2.弹窗提示

构造QMessageBox的实例,设置所需显示的消息,然后调用exec()来显示消息。用户必须单击“确定”按钮以关闭消息框。GUI的其余部分将被阻止,直到消息框被关闭。

QMessageBox msgBox;
msgBox.setText(u8"你好~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
msgBox.exec();

在这里插入图片描述

3.提供选项的弹窗提示

一个比仅仅提醒用户事件更好的方法是询问用户该怎么做。将问题存储在信息性文本属性中,并将标准按钮属性设置为所需的按钮集作为用户响应集。通过使用位或运算符组合StandardButtons中的值来指定按钮。按钮的显示顺序取决于平台。例如,在Windows上,“保存”显示在“取消”的左侧,而在Mac OS上,顺序相反。要向用户提供更多信息以帮助他回答问题,通过setDetailedText设置详细文本属性。如果设置了详细文本属性,则显示详细信息按钮。exec()槽返回单击的按钮的StandardButtons值。

QMessageBox msgBox;
msgBox.setText(u8"该文档已被修改.");
msgBox.setDetailedText(u8"这里是详细的提示信息");
msgBox.setInformativeText(u8"是否要保存你的修改?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();

switch (ret) {
  case QMessageBox::Save:
      qDebug() << "save";
      break;
  case QMessageBox::Discard:
      qDebug() << "Discard";
      break;
  case QMessageBox::Cancel:
      qDebug() << "Cancel";
      break;
  default:
      qDebug() << "default";
      break;
}

在这里插入图片描述

4.作为提示,报警,报错提示窗口

int ret = QMessageBox::information(this, tr(u8"信息提示"),
                               tr(u8"该文档已被修改.\n"
                                  u8"是否要保存你的修改?"),
                               QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Help);

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于窗口的类型,有以下几种可以选择:

内容说明
QMessageBox::NoIcon0the message box does not have any icon.
QMessageBox::Question4an icon indicating that the message is asking a question.
QMessageBox::Information1an icon indicating that the message is nothing out of the ordinary.
QMessageBox::Warning2an icon indicating that the message is a warning, but can be dealt with.
QMessageBox::Critical3an icon indicating that the message represents a critical problem.

对于窗口中的按钮,有以下几种可以选择:

内容说明
QMessageBox::Ok0x00000400An “OK” button defined with the AcceptRole.
QMessageBox::Open0x00002000An “Open” button defined with the AcceptRole.
QMessageBox::Save0x00000800A “Save” button defined with the AcceptRole.
QMessageBox::Cancel0x00400000A “Cancel” button defined with the RejectRole.
QMessageBox::Close0x00200000A “Close” button defined with the RejectRole.
QMessageBox::Discard0x00800000A “Discard” or “Don’t Save” button, depending on the platform, defined with the DestructiveRole.
QMessageBox::Apply0x02000000An “Apply” button defined with the ApplyRole.
QMessageBox::Reset0x04000000A “Reset” button defined with the ResetRole.
QMessageBox::RestoreDefaults0x08000000A “Restore Defaults” button defined with the ResetRole.
QMessageBox::Help0x01000000A “Help” button defined with the HelpRole.
QMessageBox::SaveAll0x00001000A “Save All” button defined with the AcceptRole.
QMessageBox::Yes0x00004000A “Yes” button defined with the YesRole.
QMessageBox::YesToAll0x00008000A “Yes to All” button defined with the YesRole.
QMessageBox::No0x00010000A “No” button defined with the NoRole.
QMessageBox::NoToAll0x00020000A “No to All” button defined with the NoRole.
QMessageBox::Abort0x00040000An “Abort” button defined with the RejectRole.
QMessageBox::Retry0x00080000A “Retry” button defined with the AcceptRole.
QMessageBox::Ignore0x00100000An “Ignore” button defined with the AcceptRole.
QMessageBox::NoButton0x00000000An invalid button.
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AoDeLuo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值