QMessageBox 类

QMessageBox 类提供了一个模态对话框,用于通知用户或向用户提出问题并接收答案。更多...

头文件 #include <QMessageBox>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QDialog

公共类型

枚举ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole }
枚举Icon { NoIcon, Question, Information, Warning, Critical }
(since 6.6) 枚举类Option { DontUseNativeDialog }
标志选项
枚举StandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask }
标志标准按钮

属性

公共函数

QMessageBox(QWidget *parent = nullptr)
QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)
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
QMessageBox::ButtonRolebuttonRole(QAbstractButton *button) const
QListbuttons() const
QCheckBox *checkBox() const
QAbstractButton *clickedButton() const
QPushButton *defaultButton() const
QStringdetailedText() const
QAbstractButton *escapeButton() const
QMessageBox::Iconicon() const
QPixmapiconPixmap() const
QStringinformativeText() const
voidopen(QObject *receiver, const char *member)
QMessageBox::Optionsoptions() const
voidremoveButton(QAbstractButton *button)
voidsetCheckBox(QCheckBox *cb)
voidsetDefaultButton(QPushButton *button)
voidsetDefaultButton(QMessageBox::StandardButton button)
voidsetDetailedText(const QString &text)
voidsetEscapeButton(QAbstractButton *button)
voidsetEscapeButton(QMessageBox::StandardButton button)
voidsetIcon(QMessageBox::Icon)
voidsetIconPixmap(const QPixmap &pixmap)
voidsetInformativeText(const QString &text)
(since 6.6) voidsetOption(QMessageBox::Option option, bool on = true)
voidsetOptions(QMessageBox::Options options)
voidsetStandardButtons(QMessageBox::StandardButtons buttons)
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
QMessageBox::StandardButtonsstandardButtons() const
(since 6.6) booltestOption(QMessageBox::Option option) const
QStringtext() const
Qt::TextFormattextFormat() const
Qt::TextInteractionFlagstextInteractionFlags() const

公共槽函数

virtual intexec() override

信号

voidbuttonClicked(QAbstractButton *button)

静态公共成员

voidabout(QWidget *parent, const QString &title, const QString &text)
voidaboutQt(QWidget *parent, const QString &title = QString())
QMessageBox::StandardButtoncritical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButtoninformation(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButtonquestion(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton警告(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

重写保护函数

virtual voidchangeEvent(QEvent *ev) override
virtual voidcloseEvent(QCloseEvent *e) override
virtual boolevent(QEvent *e) override
virtual voidkeyPressEvent(QKeyEvent *e) override
virtual voidresizeEvent(QResizeEvent *event) override
virtual voidshowEvent(QShowEvent *e) override

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

详细描述

消息框显示主文本以提醒用户注意某种情况,说明性文本以进一步解释情况,以及可选的详细信息文本以在用户请求时提供更多信息。

消息框还可以显示图标标准按钮以接受用户响应。

提供了两个使用 QMessageBox 的 API:基于属性的 API 和静态函数。调用静态函数的方法更简单,但其灵活性低于使用基于属性的 API,并且结果信息较少。建议使用基于属性的 API。

基于属性的 API

要使用基于属性的 API,创建 QMessageBox 的一个实例,设置所需的属性,然后调用 exec() 来显示消息。最简单的配置是仅设置 消息文本 属性。

QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.exec();

用户必须单击 确定 按钮来关闭消息框。其他 GUI 在消息框关闭之前被阻止。

除了只是提醒用户某种事件外,还可以询问用户如何处理该事件。

标准按钮 属性设置为用户响应的按钮集。按钮是通过使用位或运算符组合来自 StandardButtons 的值指定的。按钮的显示顺序取决于平台。例如,在 Windows 上,保存 显示在 取消 的左侧,而在 macOS 上,顺序相反。将您的标准按钮之一标记为您默认按钮

可以使用 说明性文本 属性添加更多上下文,以帮助用户选择适当的操作。

QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();

exec() 槽返回被点击的按钮的 StandardButtons 值。

switch (ret) {
  case QMessageBox::Save:
      // Save was clicked
      break;
  case QMessageBox::Discard:
      // Don't Save was clicked
      break;
  case QMessageBox::Cancel:
      // Cancel was clicked
      break;
  default:
      // should never be reached
      break;
}

为了给用户提供更多信息以帮助他们选择合适的操作,请设置 详细信息文本 属性。根据平台,详细信息文本 可能需要用户单击 显示详细信息... 按钮才能显示。

单击 显示详细信息... 按钮将显示详细文本。

富文本和文本格式属性

属性详细文本始终被解释为纯文本。属性主文本信息文本可以是纯文本或富文本。这些字符串的解释根据文本格式属性的规定。默认设置为自动文本

注意,对于包含XML元字符的一些纯文本字符串,自动文本富文本检测测试可能会失败,导致您的纯文本字符串被错误地解释为富文本。在这些罕见的情况下,使用Qt::convertFromPlainText()将您的纯文本字符串转换为视觉等效的富文本字符串,或者使用setTextFormat()显式设置文本格式属性。

严重级别和图标及位图属性

QMessageBox支持四种预定义的消息严重级别,或者说消息类型,它们之间的真正区别在于它们各自显示的预设图标。通过将图标属性设置为以下预设图标之一来指定四个预定义消息类型之一。以下规则仅供参考:

提问用于正常运行期间的问题。

信息用于报告关于正常运行的信息。

警告用于报告非关键性错误。

关键用于报告关键性错误。

预设图标不是由QMessageBox定义的,而是由样式提供的。默认值为无图标。在其他情况下,消息框对所有情况都是相同的。使用标准图标时,请使用表格中推荐的图标,或者使用您平台样式指南中推荐的建议图标。如果标准图标都没有适合您的消息框,您可以通过设置图标位图属性来使用自定义图标,而不是设置图标属性。

总之,要设置图标,可以使用setIcon()设置标准图标之一,或者使用setIconPixmap()设置自定义图标。

静态函数API

使用静态函数API构建消息框虽然方便,但不如使用基于属性的API灵活,因为静态函数签名缺少设置信息文本详细文本属性的参数。针对这一问题的一个解决方案是使用标题参数作为消息框的主文本,使用文本参数作为消息框的信息文本。因为这样做会明显降低消息框的可读性,因此平台指南不建议这样做。《微软Windows用户界面指南》建议使用应用程序名称作为窗口标题,这意味着如果您有主文本之外的信息文本,您必须将其附加到文本参数。

请注意,静态函数签名相对于其按钮参数已更改,现在它们用于设置标准按钮默认按钮

静态函数可用于创建信息()、问题()、警告()和严重警告()消息框。

int ret = QMessageBox::warning(this, tr("My Application"),
                               tr("The document has been modified.\n"
                                  "Do you want to save your changes?"),
                               QMessageBox::Save | QMessageBox::Discard
                               | QMessageBox::Cancel,
                               QMessageBox::Save);

标准对话框示例展示了如何使用QMessageBox和其他内置的Qt对话框。

高级用法

如果标准按钮不足以满足您的消息框需求,您可以使用带有文本和按钮角色addButton()重载来添加自定义按钮。按钮角色用于QMessageBox确定屏幕上按钮的顺序(这会根据平台而变化)。在调用exec()()后,您可以测试clickedButton()的值。例如,

QMessageBox msgBox;
QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole);
QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);

msgBox.exec();

if (msgBox.clickedButton() == connectButton) {
    // connect
} else if (msgBox.clickedButton() == abortButton) {
    // abort
}

默认和Esc键

可以使用setDefaultButton()指定默认按钮(即在按下Enter时激活的按钮)。如果没有指定默认按钮,QMessageBox将尝试根据消息框中使用的按钮的按钮角色来找到它。

可以使用setEscapeButton()指定Esc按钮(即在按下Esc时激活的按钮)。如果没有指定Esc按钮,QMessageBox将尝试使用以下规则找到它

  1. 如果只有一个按钮,则它是按下Esc时激活的按钮。
  2. 如果有一个取消按钮,则它是按下Esc时激活的按钮。
  3. 如果恰好有一个按钮具有拒绝角色否角色,则它是按下Esc时激活的按钮。

当无法使用这些规则确定Esc按钮时,按下Esc将没有任何效果。

另请参阅QDialogButtonBox标准对话框示例

成员类型文档

枚举 QMessageBox::ButtonRole

此枚举描述了可用于描述按钮角色的角色。这些角色的组合用作标志,用于描述它们行为的不同方面。

常量描述
QMessageBox::InvalidRole-1按钮无效。
QMessageBox::AcceptRole0单击按钮会导致对话框被接受(例如,确定)。
QMessageBox::RejectRole1单击按钮会导致对话框被拒绝(例如,取消)。
QMessageBox::DestructiveRole2单击按钮会导致破坏性更改(例如,丢弃更改)并关闭对话框。
QMessageBox::ActionRole3单击按钮会导致对话框内部元素发生更改。
QMessageBox::HelpRole4可单击按钮以请求帮助。
QMessageBox::YesRole5按钮类似于“是”按钮。
QMessageBox::NoRole6按钮类似于“否”按钮。
QMessageBox::ApplyRole8按钮应用当前更改。
QMessageBox::ResetRole7按钮将对话框字段重置为默认值。

另请参阅StandardButton

枚举 QMessageBox::Icon

此枚举具有以下值

常量描述
QMessageBox::NoIcon0信息框没有任何图标。
QMessageBox::Question4一个表示信息正在询问问题的图标。
QMessageBox::Information1一个表示信息没有特别之处的图标。
QMessageBox::Warning2一个表示信息是警告但可以处理的图标。
QMessageBox::Critical3一个表示信息代表严重问题的图标。

[自6.6版本起] 枚举类 QMessageBox::Option
标志 QMessageBox::Options

常量描述
QMessageBox::Option::DontUseNativeDialog0x00000001不使用原生信息对话框。

此枚举自Qt 6.6版本引入。

Options类型是QFlags<Option>的typedef。它存储Option值的OR组合。

枚举 QMessageBox::StandardButton
标志 QMessageBox::StandardButtons

这些枚举描述了标准按钮的标志。每个按钮都有一个定义的ButtonRole

常量描述
QMessageBox::Ok0x00000400使用AcceptRole定义的“确定”按钮。
QMessageBox::Open0x00002000使用AcceptRole定义的“打开”按钮。
QMessageBox::Save0x00000800使用AcceptRole定义的“保存”按钮。
QMessageBox::Cancel0x00400000使用RejectRole定义的“取消”按钮。
QMessageBox::Close0x00200000使用RejectRole定义的“关闭”按钮。
QMessageBox::Discard0x00800000根据平台不同可能是“丢弃”或“不保存”按钮,使用DestructiveRole定义。
QMessageBox::Apply0x02000000使用ApplyRole定义的“应用”按钮。
QMessageBox::Reset0x04000000使用ResetRole定义的“重置”按钮。
QMessageBox::RestoreDefaults0x08000000使用ResetRole定义的“恢复默认设置”按钮。
QMessageBox::Help0x01000000使用HelpRole定义的“帮助”按钮。
QMessageBox::SaveAll0x00001000使用AcceptRole定义的“全部保存”按钮。
QMessageBox::Yes0x00004000使用YesRole定义的“是”按钮。
QMessageBox::YesToAll0x00008000使用YesRole定义的“全部是”按钮。
QMessageBox::No0x00010000使用NoRole定义的“否”按钮。
QMessageBox::NoToAll0x00020000使用NoRole定义的“全部否”按钮。
QMessageBox::Abort0x00040000使用RejectRole定义的“中止”按钮。
QMessageBox::Retry0x00080000使用AcceptRole定义的“重试”按钮。
QMessageBox::Ignore0x00100000使用AcceptRole定义的“忽略”按钮。
QMessageBox::NoButton0x00000000一个无效的按钮。

以下值已弃用

常量描述
QMessageBox::YesAllYesToAll请使用YesToAll。
QMessageBox::NoAllNoToAll请使用NoToAll。
QMessageBox::Default0x00000100请使用 defaultButton 参数的 information()、warning() 等,或者调用 setDefaultButton()。
QMessageBox::Escape0x00000200请用 setEscapeButton() 来代替。
QMessageBox::FlagMask0x00000300 
QMessageBox::ButtonMask~FlagMask 

StandardButtons 类型是 QFlags<StandardButton> 的一个类型定义。它存储了 StandardButton 值的 OR 组合。

另请参阅ButtonRolestandardButtons

属性文档

detailedText : QString

此属性 Holding 要在详细信息区域显示的文本。

文本将被解释为纯文本。

默认情况下,此属性包含一个空字符串。

访问函数

QStringdetailedText() const
voidsetDetailedText(const QString &text)

另请参阅QMessageBox::textQMessageBox::informativeText

icon : Icon

此属性 Holding 消息框的图标。

消息框的图标可以用以下值之一指定

默认为 QMessageBox::NoIcon

用于显示实际图标的 pixmap 依赖于当前的 GUI 风格。您还可以通过设置 icon pixmap 属性来为图标设置自定义 pixmap。

访问函数

QMessageBox::Iconicon() const
voidsetIcon(QMessageBox::Icon)

另请参阅iconPixmap

iconPixmap : QPixmap

此属性 Holding 当前图标。

目前由消息框使用的图标。请注意,要绘制一个适用于所有 GUI 风格的 pixmap 难以做到;您可能需要为每个平台提供不同的 pixmap。

默认情况下,此属性未定义。

访问函数

QPixmapiconPixmap() const
voidsetIconPixmap(const QPixmap &pixmap)

另请参阅icon

informativeText : QString

此属性 Holding 提供消息更完整描述的信息文本。

信息文本可以用在 text() 上以给用户更多信息,例如描述该情况的可能后果或建议替代解决方案。

默认情况下,此属性包含一个空字符串。

访问函数

QStringinformativeText() const
voidsetInformativeText(const QString &text)

另请参阅QMessageBox::textQMessageBox::detailedText

[since 6.6] options : Options

影响对话框外观和感觉的选项。

默认情况下,这些选项被禁用。

应在更改对话框属性或显示对话框之前设置选项 Option::DontUseNativeDialog

当对话框可见时设置选项,不一定直接对对话框产生效果。

在更改其他属性之后设置选项可能会导致这些值无效。

此属性自 Qt 6.6 版本引入。

访问函数

QMessageBox::Optionsoptions() const
voidsetOptions(QMessageBox::Options options)

另请参阅setOption() 和 testOption

standardButtons : StandardButtons

消息框中的标准按钮集合

此属性控制消息框使用哪些标准按钮。

默认情况下,此属性不包含任何标准按钮。

访问函数

QMessageBox::StandardButtonsstandardButtons() const
voidsetStandardButtons(QMessageBox::StandardButtons buttons)

另请参阅addButton

text : QString

此属性包含要显示的消息框文本。

文本应是一个简短句子或短语,描述情况,最好以中立陈述或行动号召问题来表述。

文本将被解释为纯文本或富文本,具体取决于文本格式设置(QMessageBox::textFormat)。默认设置是 Qt::AutoText,即消息框将尝试自动检测文本格式。

此属性的默认值是一个空字符串。

访问函数

QStringtext() const
voidsetText(const QString &text)

另请参阅textFormatQMessageBox::informativeTextQMessageBox::detailedText

textFormat : Qt::TextFormat

此属性保存消息框显示文本的格式。

消息框当前使用的文本格式。有关可能选项的说明,请参阅 Qt::TextFormat 枚举。

默认格式是 Qt::AutoText

访问函数

Qt::TextFormattextFormat() const
voidsetTextFormat(Qt::TextFormat format)

另请参阅setText

textInteractionFlags : Qt::TextInteractionFlags

指定消息框标签应如何与用户输入交互。

默认值取决于样式。

访问函数

Qt::TextInteractionFlagstextInteractionFlags() const
voidsetTextInteractionFlags(Qt::TextInteractionFlags flags)

另请参阅QStyle::SH_MessageBox_TextInteractionFlags

成员函数文档

[明确指定] QMessageBox::QMessageBox(QWidget *parent = nullptr)

构造一个不带文本和按钮的应用程序模态消息框。 parent 传递给 QDialog 构造函数。

可以在调用 show() 之前通过 setWindowModality() 来覆盖窗口模态。

注意:使用 open() 或 exec() 来显示消息框会影响窗口模态。请参阅每个函数的详细文档以获取更多信息。

在 macOS 上,如果你想让消息框以其 父窗口Qt::Sheet 的形式显示,请将消息框的 窗口模态 设置为 Qt::WindowModal 或使用 open(). 否则,消息框将是一个标准对话框。

另请参阅:setWindowTitle(),setText(),setIcon(),setStandardButtons() 和 setWindowModality().

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

根据指定的 图标标题文本 和标准 按钮 构造一个 应用程序模态 消息框。可以使用 addButton() 在任何时候添加标准或自定义按钮。《i translate="no">父窗口 和 f 参数被传递给 QDialog 构造函数。

可以在调用 show() 之前通过 setWindowModality() 来覆盖窗口模态。

注意:使用 open() 或 exec() 来显示消息框会影响窗口模态。请参阅每个函数的详细文档以获取更多信息。

在 macOS 上,如果 父窗口 不是 nullptr 并且你想让你的消息框以那个父窗口的 Qt::Sheet 形式显示,请将消息框的 窗口模态 设置为 Qt::WindowModal(默认)。否则,消息框将是一个标准对话框。

另请参阅:setWindowTitle(),setText(),setIcon(),setStandardButtons() 和 setWindowModality().

[虚拟 noexcept] QMessageBox::~QMessageBox()

销毁消息框。

[静态] void QMessageBox::about(QWidget *parent, const QString &title, const QString &text)

显示带有标题 title 和文本 text 的简单“关于”对话框。关于对话框的父类是 parent

about() 在四个位置查找合适的图标

  1. 如果存在,更倾向于 parent->icon()。
  2. 如果没有,它会尝试包含 parent 的顶层小部件。
  3. 如果这也失败了,它会尝试 活动窗口。
  4. 最后,使用信息图标。

关于对话框只有一个名为“确定”的按钮。

在 macOS 上,关于对话框以无模态窗明的形式弹出;在其他平台上,它当前是应用程序模态。

另请参阅:QWidget::windowIcon() 和 QApplication::activeWindow().

[静态] void QMessageBox::aboutQt(QWidget *parent, const QString &title = QString())

显示有关 Qt 的简单消息框,其中包含给定的 标题 并位于 parent(如果 parent 不是 nullptr)的中央。消息包括应用程序使用的 Qt 版本号。

这适用于加入应用程序的帮助菜单,如菜单示例所示。

QApplication通过槽来提供此功能。

在macOS上,关于Qt的对话框以模态窗口弹出;在其他平台上,它目前以应用程序模态的方式显示。

另请参阅QApplication::aboutQt()。

void QMessageBox::addButton(QAbstractButton *button, QMessageBox::ButtonRole role)

将指定的按钮添加到具有指定角色的消息框中。

另请参阅removeButton()、button()和setStandardButtons()。

QPushButton *QMessageBox::addButton(const QString &text, QMessageBox::ButtonRole role)

这是一个重载函数。

创建一个带有指定文本的按钮,将其添加到指定角色的消息框中,并返回它。

QPushButton *QMessageBox::addButton(QMessageBox::StandardButton button)

这是一个重载函数。

如果合适,向消息框添加一个标准按钮,并返回该按钮。

另请参阅setStandardButtons()。

QAbstractButton *QMessageBox::button(QMessageBox::StandardButton which) const

返回对应于标准按钮which的指针,如果此消息框中没有标准按钮,则返回nullptr

注意:修改返回按钮的属性可能不会反映在消息对话框的本机实现中。若要自定义对话框按钮,请添加一个自定义按钮按钮标题,或者设置Option::DontUseNativeDialog选项。

另请参阅standardButtonsstandardButton()。

[信号] void QMessageBox::buttonClicked(QAbstractButton *button)

当在QMessageBox中点击按钮时,会发出此信号。所点击的按钮在button中返回。

QMessageBox::ButtonRole QMessageBox::buttonRole(QAbstractButton *button) const

返回指定按钮的按钮角色。如果buttonnullptr或尚未添加到消息框,则此函数返回InvalidRole

另请参阅buttons()和addButton()。

QList<QAbstractButton *> QMessageBox::buttons() const

返回已添加到消息框的所有按钮的列表。

另请参阅 buttonRole(),addButton()和removeButton()。

[覆盖虚保护] void QMessageBox::changeEvent(QEvent *ev)

实现了:QWidget::changeEvent(QEvent *event)。

QCheckBox *QMessageBox::checkBox() const

返回对话框中显示的复选框。如果没有设置复选框,则为nullptr

另请参阅 setCheckBox()。

QAbstractButton *QMessageBox::clickedButton() const

返回用户点击的按钮,或当用户按下键并未设置退出按钮时为nullptr

如果尚未调用exec(),则返回nullptr。

示例

QMessageBox messageBox(this);
QAbstractButton *disconnectButton =
      messageBox.addButton(tr("Disconnect"), QMessageBox::ActionRole);
...
messageBox.exec();
if (messageBox.clickedButton() == disconnectButton) {
    ...
}

另请参阅 standardButton()和button()。

[覆盖虚保护] void QMessageBox::closeEvent(QCloseEvent *e)

实现了:QDialog::closeEvent(QCloseEvent *e)。

[静态] QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

在指定父组件 ottenere una finestra a messaggio critica con il titolo fornito ed il testo specificato.

Aggiunge i pulsanti standard alla finestra a messaggio. defaultButton definisce il pulsante utilizzato quando premereInviodefaultButton deve fare riferimento a un pulsante specificato in pulsanti。 Se defaultButton èQMessageBox::NoButtonQMessageBox seleziona automaticamente un pulsante di default appropriato.

Restituisce l'identità del pulsante standard che è stato cliccato. Se viene premostrEsc al posto, viene restituito ilpulsante di escape.

La finestra a messaggio è una finestra di dialogoa modalità applicativa.

Attenzione: Non eliminareparent durante l'esecuzione del dialogo. Se desideri fare questo, dovresti creare il dialogo tu stesso utilizzando uno dei costruttoriQMessageBox.

Altro vedere question(),warning() e information()。

QPushButton *QMessageBox::defaultButton() const

Restituisce il pulsante che dovrebbe essere ilpulsante di default del messaggio. Restituisce nullptr se non è impostato né pulsante di default né pulsante di escape.

参阅:setDefaultButton(),addButton() 和 QPushButton::setDefault()。

QAbstractButton *QMessageBox::escapeButton() const

返回当按下 Esc 键时被激活的按钮。

默认情况下,QMessageBox 尝试自动检测 escape 按钮如下所示:

  1. 如果只有一个按钮,该按钮将成为 escape 按钮。
  2. 如果有 取消 按钮,它将成为 escape 按钮。
  3. 仅在 macOS 上,如果只有一个按钮具有 QMessageBox::RejectRole 角色,它将成为 escape 按钮。

当无法自动检测 escape 按钮时,按 Esc 无效。

参阅:setEscapeButton() 和 addButton()。

[覆盖虚拟受保护] bool QMessageBox::event(QEvent *e)

重新实现:QWidget::event(QEvent *event).

[覆盖虚拟槽] int QMessageBox::exec()

重新实现:QDialog::exec().

以模态对话框的形式显示消息框,直到用户关闭它才解除阻塞。

当使用具有标准按钮的 QMessageBox 时,此函数返回一个指示被点击的标准按钮的 StandardButton 值。当使用自定义按钮的 QMessageBox 时,此函数返回一个不透明的值;使用 clickedButton() 来确定哪个按钮被点击。

注意:result() 函数还返回 StandardButton 值而非 QDialog::DialogCode

直到用户关闭对话框(无论是通过点击按钮还是使用窗口系统提供的机制),用户不能与同一应用程序中的任何其他窗口进行交互。

参阅:show() 和 result()。

[静态] QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

在指定的 parent 小部件之前打开一个具有给定 titletext 的信息消息框。

Aggiunge i pulsanti standard alla finestra a messaggio. defaultButton definisce il pulsante utilizzato quando premereInviodefaultButton deve fare riferimento a un pulsante specificato in pulsanti。 Se defaultButton èQMessageBox::NoButtonQMessageBox seleziona automaticamente un pulsante di default appropriato.

Restituisce l'identità del pulsante standard che è stato cliccato. Se viene premostrEsc al posto, viene restituito ilpulsante di escape.

La finestra a messaggio è una finestra di dialogoa modalità applicativa.

Attenzione: Non eliminareparent durante l'esecuzione del dialogo. Se desideri fare questo, dovresti creare il dialogo tu stesso utilizzando uno dei costruttoriQMessageBox.

参阅:question(),warning() 和 critical()。

[覆盖虚拟受保护] void QMessageBox::keyPressEvent(QKeyEvent *e)

重新实现:QDialog::keyPressEvent(QKeyEvent *e).

void QMessageBox::open(QObject *receiver, const char *member)

打开对话框,并将其 finished() 或 buttonClicked() 信号连接到 receivermember 指定的槽。如果 member 中的槽的第一个参数是指针,则连接到 buttonClicked(),否则连接到 finished()。

当对话框关闭时,将信号从槽断开。

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

在指定的 parent 小部件之前打开带有给定 titletext 的询问消息框。

Aggiunge i pulsanti standard alla finestra a messaggio. defaultButton definisce il pulsante utilizzato quando premereInviodefaultButton deve fare riferimento a un pulsante specificato in pulsanti。 Se defaultButton èQMessageBox::NoButtonQMessageBox seleziona automaticamente un pulsante di default appropriato.

Restituisce l'identità del pulsante standard che è stato cliccato. Se viene premostrEsc al posto, viene restituito ilpulsante di escape.

La finestra a messaggio è una finestra di dialogoa modalità applicativa.

Attenzione: Non eliminareparent durante l'esecuzione del dialogo. Se desideri fare questo, dovresti creare il dialogo tu stesso utilizzando uno dei costruttoriQMessageBox.

另请参阅信息警告严重

void QMessageBox::removeButton(QAbstractButton *button)

从按钮框中移除 button 而不删除它。

另请参阅添加按钮设置标准按钮

[重写虚受保护] void QMessageBox::resizeEvent(QResizeEvent *event)

重新实现了:QDialog::resizeEvent(QResizeEvent *).

void QMessageBox::setCheckBox(QCheckBox *cb)

在消息对话框上设置复选框 cb。消息框拥有复选框的所有权。参数 cb 可以是 nullptr 以移除消息框中的现有复选框。

另请参阅复选框

void QMessageBox::setDefaultButton(QPushButton *button)

将消息框的 默认按钮 设置为 button

另请参阅默认按钮添加按钮QPushButton::setDefault

void QMessageBox::setDefaultButton(QMessageBox::StandardButton button)

将消息框的 默认按钮 设置为 button

另请参阅添加按钮QPushButton::setDefault

void QMessageBox::setEscapeButton(QAbstractButton *button)

设置当按下Esc键时被激活的按钮为button

另请参阅escapeButton(),addButton()和clickedButton

void QMessageBox::setEscapeButton(QMessageBox::StandardButton button)

设置当按下Esc键时被激活的按钮为button

另请参阅addButton()和clickedButton

[since 6.6] void QMessageBox::setOption(QMessageBox::Option option, bool on = true)

如果on为true,则将给定的option设置为启用;否则,清除给定的option

选项(尤其是Option::DontUseNativeDialog选项)应在显示对话框之前设置。

当对话框可见时设置选项,不一定直接对对话框产生效果。

在更改其他属性之后设置选项可能会导致这些值无效。

此功能是在Qt 6.6中引入的。

另请参阅optionstestOption

void QMessageBox::setWindowModality(Qt::WindowModality windowModality)

此函数隐藏了QWidget::setWindowModality

将消息框的模式设置为windowModality

在macOS上,如果模式设置为Qt::WindowModal且消息框有父对象,则消息框将是一个Qt::Sheet,否则消息框将是一个标准对话框。

void QMessageBox::setWindowTitle(const QString &title)

此函数隐藏了QWidget::setWindowTitle

将消息框的标题设置为title。在macOS上,窗口标题将被忽略(符合macOS指南要求)。

[重写虚受保护] void QMessageBox::showEvent(QShowEvent *e)

重写: QDialog::showEvent(QShowEvent *event)。

QMessageBox::StandardButton QMessageBox::standardButton(QAbstractButton *button) const

返回与给定button对应的标准按钮枚举值,或者如果给定的button不是标准按钮,则返回NoButton

另请参阅button()和standardButtons

[since 6.6] bool QMessageBox::testOption(QMessageBox::Option option) const

如果给定的option被启用,则返回true;否则返回false。

此功能是在Qt 6.6中引入的。

另请参阅optionssetOption

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

在指定的 parent 小部件前打开带给定 titletext 的警告信息框。

Aggiunge i pulsanti standard alla finestra a messaggio. defaultButton definisce il pulsante utilizzato quando premereInviodefaultButton deve fare riferimento a un pulsante specificato in pulsanti。 Se defaultButton èQMessageBox::NoButtonQMessageBox seleziona automaticamente un pulsante di default appropriato.

Restituisce l'identità del pulsante standard che è stato cliccato. Se viene premostrEsc al posto, viene restituito ilpulsante di escape.

La finestra a messaggio è una finestra di dialogoa modalità applicativa.

Attenzione: Non eliminareparent durante l'esecuzione del dialogo. Se desideri fare questo, dovresti creare il dialogo tu stesso utilizzando uno dei costruttoriQMessageBox.

另请参阅 question(),information() 和 critical()。

宏文档

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

该宏可用于确保应用程序使用足够的Qt版本运行。如果你的应用程序依赖于已修复在某个修复版本中引入的特定错误(例如,6.1.2),则这特别有用。

argcargv 参数是 main() 函数的 argcargv 参数。 version 参数指定Qt应用程序要求的具体版本(例如,“6.1.2”)的字符串字面值。

示例

#include <QApplication>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QT_REQUIRE_VERSION(argc, argv, "4.0.2")

    QApplication app(argc, argv);
    ...
    return app.exec();
}

© 2024 Qt公司有限公司。此处包含的文档贡献的版权属于各自的拥有者。此处提供的文档是根据自由软件基金会发布的 GNU自由文档许可证版本1.3 的条款授予的。Qt及其商标是芬兰的Qt公司及其在世界其他地区的商标。所有其他商标均属于其各自的拥有者。