QMessageBox

QMessageBox class provides a modal dialog for informing the user or for asking the user a question and receiving an answer. 更多

Inheritance diagram of PySide2.QtWidgets.QMessageBox

概要

函数

信号

静态函数

  • def about (parent, title, text)

  • def aboutQt (parent[, title=””])

  • def critical (parent, title, text, button0, button1)

  • def critical (parent, title, text[, buttons=QMessageBox.Ok[, defaultButton=NoButton]])

  • def information (parent, title, text, button0[, button1=NoButton])

  • def information (parent, title, text[, buttons=QMessageBox.Ok[, defaultButton=NoButton]])

  • def question (parent, title, text, button0, button1)

  • def question (parent, title, text[, buttons=QMessageBox.StandardButtons(Yes | No)[, defaultButton=NoButton]])

  • def standardIcon (icon)

  • def warning (parent, title, text, button0, button1)

  • def warning (parent, title, text[, buttons=QMessageBox.Ok[, defaultButton=NoButton]])

详细描述

消息框显示首要 text 以向用户发出状况警报, informative text 以进一步阐述警报或向用户询问问题,和可选 detailed text 以提供更多数据,若用户要求。消息框也可以显示 icon and standard buttons 为接受用户响应。

Two APIs for using QMessageBox are provided, the property-based API, and the static functions. Calling one of the static functions is the simpler approach, but it is less flexible than using the property-based API, and the result is less informative. Using the property-based API is recommended.

基于特性的 API

To use the property-based API, construct an instance of QMessageBox , set the desired properties, and call exec() to show the message. The simplest configuration is to set only the message text 特性。

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

The user must click the OK button to dismiss the message box. The rest of the GUI is blocked until the message box is dismissed.

../../_images/msgbox1.png

A better approach than just alerting the user to an event is to also ask the user what to do about it. Store the question in the informative text property, and set the standard buttons property to the set of buttons you want as the set of user responses. The buttons are specified by combining values from StandardButtons using the bitwise OR operator. The display order for the buttons is platform-dependent. For example, on Windows, Save is displayed to the left of Cancel, whereas on Mac OS, the order is reversed.

Mark one of your standard buttons to be your default button .

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();
												

This is the approach recommended in the macOS Guidelines . Similar guidelines apply for the other platforms, but note the different ways the informative text is handled for different platforms.

../../_images/msgbox2.png

exec() slot returns the StandardButtons value of the button that was clicked.

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;
}
												

To give the user more information to help him answer the question, set the detailed text property. If the detailed text property is set, the Show Details… button will be shown.

../../_images/msgbox3.png

Clicking the Show Details… button displays the detailed text.

../../_images/msgbox4.png

富文本和文本格式特性

detailed text property is always interpreted as plain text. The main text and informative text properties can be either plain text or rich text. These strings are interpreted according to the setting of the text format property. The default setting is auto-text .

Note that for some plain text strings containing XML meta-characters, the auto-text rich text detection test may fail causing your plain text string to be interpreted incorrectly as rich text. In these rare cases, use convertFromPlainText() to convert your plain text string to a visually equivalent rich text string, or set the text format property explicitly with setTextFormat() .

Severity Levels and the Icon and Pixmap Properties

QMessageBox supports four predefined message severity levels, or message types, which really only differ in the predefined icon they each show. Specify one of the four predefined message types by setting the icon property to one of the predefined icons . The following rules are guidelines:

../../_images/qmessagebox-quest.png

询问

For asking a question during normal operations.

../../_images/qmessagebox-info.png

Information

For reporting information about normal operations.

../../_images/qmessagebox-warn.png

警告

For reporting non-critical errors.

../../_images/qmessagebox-crit.png

Critical

For reporting critical errors.

Predefined icons are not defined by QMessageBox , but provided by the style. The default value is No Icon . The message boxes are otherwise the same for all cases. When using a standard icon, use the one recommended in the table, or use the one recommended by the style guidelines for your platform. If none of the standard icons is right for your message box, you can use a custom icon by setting the icon pixmap property instead of setting the icon 特性。

In summary, to set an icon, use either setIcon() for one of the standard icons, or setIconPixmap() for a custom icon.

静态函数 API

Building message boxes with the static functions API, although convenient, is less flexible than using the property-based API, because the static function signatures lack parameters for setting the informative text and detailed text properties. One work-around for this has been to use the title parameter as the message box main text and the text parameter as the message box informative text. Because this has the obvious drawback of making a less readable message box, platform guidelines do not recommend it. The Microsoft Windows User Interface Guidelines recommend using the application name 作为 window's title , which means that if you have an informative text in addition to your main text, you must concatenate it to the text 参数。

Note that the static function signatures have changed with respect to their button parameters, which are now used to set the standard buttons default button .

Static functions are available for creating information() , question() , warning() ,和 critical() message boxes.

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);
												

标准对话框 example shows how to use QMessageBox and the other built-in Qt dialogs.

高级用法

standard buttons are not flexible enough for your message box, you can use the addButton() overload that takes a text and a ButtonRole to add custom buttons. The ButtonRole is used by QMessageBox to determine the ordering of the buttons on screen (which varies according to the platform). You can test the value of clickedButton() after calling exec() 。例如,

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 键

The default button (i.e., the button activated when Enter is pressed) can be specified using setDefaultButton() . If a default button is not specified, QMessageBox tries to find one based on the button roles of the buttons used in the message box.

The escape button (the button activated when Esc is pressed) can be specified using setEscapeButton() . If an escape button is not specified, QMessageBox tries to find one using these rules:

  1. If there is only one button, it is the button activated when Esc is pressed.

  2. If there is a Cancel button, it is the button activated when Esc is pressed.

  3. If there is exactly one button having either the Reject role the No role , it is the button activated when Esc is pressed.

When an escape button can’t be determined using these rules, pressing Esc has no effect.

class QMessageBox ( icon , title , text [ , buttons=QMessageBox.NoButton [ , parent=None [ , flags=Qt.Dialog | Qt.MSWindowsFixedSizeDialogHint ] ] ] )

QMessageBox([parent=None])

param parent

QWidget

param title

unicode

param buttons

StandardButtons

param flags

WindowFlags

param icon

Icon

param text

unicode

Constructs a message box with the given icon , title , text , and standard buttons . Standard or custom buttons can be added at any time using addButton() parent and f 自变量被传递给 QDialog 构造函数。

消息框是 application modal 对话框。

在 macOS,若 parent 不是 None and you want your message box to appear as a Sheet of that parent, set the message box’s window modality to WindowModal (default). Otherwise, the message box will be a standard dialog.

Constructs a message box with no text and no buttons. parent 会被传递给 QDialog 构造函数。

On macOS, if you want your message box to appear as a Sheet of its parent , set the message box’s window modality to WindowModal or use open() . Otherwise, the message box will be a standard dialog.

PySide2.QtWidgets.QMessageBox. Icon

This enum has the following values:

常量

描述

QMessageBox.NoIcon

the message box does not have any icon.

QMessageBox.Question

an icon indicating that the message is asking a question.

QMessageBox.Information

an icon indicating that the message is nothing out of the ordinary.

QMessageBox.Warning

an icon indicating that the message is a warning, but can be dealt with.

QMessageBox.Critical

an icon indicating that the message represents a critical problem.

PySide2.QtWidgets.QMessageBox. ButtonRole

This enum describes the roles that can be used to describe buttons in the button box. Combinations of these roles are as flags used to describe different aspects of their behavior.

常量

描述

QMessageBox.InvalidRole

The button is invalid.

QMessageBox.AcceptRole

Clicking the button causes the dialog to be accepted (e.g. OK).

QMessageBox.RejectRole

Clicking the button causes the dialog to be rejected (e.g. Cancel).

QMessageBox.DestructiveRole

Clicking the button causes a destructive change (e.g. for Discarding Changes) and closes the dialog.

QMessageBox.ActionRole

Clicking the button causes changes to the elements within the dialog.

QMessageBox.HelpRole

The button can be clicked to request help.

QMessageBox.YesRole

The button is a “Yes”-like button.

QMessageBox.NoRole

The button is a “No”-like button.

QMessageBox.ApplyRole

The button applies current changes.

QMessageBox.ResetRole

The button resets the dialog’s fields to default values.

另请参阅

StandardButton

PySide2.QtWidgets.QMessageBox. StandardButton

These enums describe flags for standard buttons. Each button has a defined ButtonRole .

常量

描述

QMessageBox.Ok

An “OK” button defined with the AcceptRole .

QMessageBox.Open

An “Open” button defined with the AcceptRole .

QMessageBox.Save

A “Save” button defined with the AcceptRole .

QMessageBox.Cancel

A “Cancel” button defined with the RejectRole .

QMessageBox.Close

A “Close” button defined with the RejectRole .

QMessageBox.Discard

A “Discard” or “Don’t Save” button, depending on the platform, defined with the DestructiveRole .

QMessageBox.Apply

An “Apply” button defined with the ApplyRole .

QMessageBox.Reset

A “Reset” button defined with the ResetRole .

QMessageBox.RestoreDefaults

A “Restore Defaults” button defined with the ResetRole .

QMessageBox.Help

A “Help” button defined with the HelpRole .

QMessageBox.SaveAll

A “Save All” button defined with the AcceptRole .

QMessageBox.Yes

A “Yes” button defined with the YesRole .

QMessageBox.YesToAll

A “Yes to All” button defined with the YesRole .

QMessageBox.No

A “No” button defined with the NoRole .

QMessageBox.NoToAll

A “No to All” button defined with the NoRole .

QMessageBox.Abort

An “Abort” button defined with the RejectRole .

QMessageBox.Retry

A “Retry” button defined with the AcceptRole .

QMessageBox.Ignore

An “Ignore” button defined with the AcceptRole .

QMessageBox.NoButton

An invalid button.

以下值已过时:

常量

描述

QMessageBox.YesAll

Use instead.

QMessageBox.NoAll

Use instead.

QMessageBox.Default

使用 defaultButton argument of information() , warning() , etc. instead, or call setDefaultButton() .

QMessageBox.Escape

调用 setEscapeButton() 代替。

QMessageBox.FlagMask

QMessageBox.ButtonMask

另请参阅

ButtonRole standardButtons

static PySide2.QtWidgets.QMessageBox. about ( parent , title , text )
参数
  • parent QWidget

  • title – unicode

  • text – unicode

Displays a simple about box with title title 和文本 text . The about box’s parent is parent .

looks for a suitable icon in four locations:

  1. It prefers parent->icon() if that exists.

  2. If not, it tries the top-level widget containing parent .

  3. If that fails, it tries the PySide2.QtWidgets.QApplication.activeWindow()

  4. As a last resort it uses the Information icon.

The about box has a single button labelled “OK”. On macOS, the about box is popped up as a modeless window; on other platforms, it is currently application modal.

static PySide2.QtWidgets.QMessageBox. aboutQt ( parent [ , title="" ] )
参数

Displays a simple message box about Qt, with the given title and centered over parent (if parent 不是 None ). The message includes the version number of Qt being used by the application.

This is useful for inclusion in the Help menu of an application, as shown in the 菜单 范例。

QApplication provides this functionality as a slot.

On macOS, the about box is popped up as a modeless window; on other platforms, it is currently application modal.

另请参阅

aboutQt()

PySide2.QtWidgets.QMessageBox. addButton ( button , role )
参数

添加给定 button to the message box with the specified role .

PySide2.QtWidgets.QMessageBox. addButton ( button )
参数

button StandardButton

返回类型

QPushButton

这是重载函数。

添加标准 button to the message box if it is valid to do so, and returns the push button.

PySide2.QtWidgets.QMessageBox. addButton ( text , role )
参数
返回类型

QPushButton

PySide2.QtWidgets.QMessageBox. button ( which )
参数

which StandardButton

返回类型

QAbstractButton

Returns a pointer corresponding to the standard button which ,或 None if the standard button doesn’t exist in this message box.

PySide2.QtWidgets.QMessageBox. buttonClicked ( button )
参数

button QAbstractButton

PySide2.QtWidgets.QMessageBox. buttonRole ( button )
参数

button QAbstractButton

返回类型

ButtonRole

Returns the button role for the specified button . This function returns InvalidRole if button is None or has not been added to the message box.

PySide2.QtWidgets.QMessageBox. buttonText ( button )
参数

button int

返回类型

unicode

Returns the text of the message box button button , or an empty string if the message box does not contain the button.

使用 button() and text() 代替。

另请参阅

setButtonText()

PySide2.QtWidgets.QMessageBox. buttons ( )
返回类型

Returns a list of all the buttons that have been added to the message box.

PySide2.QtWidgets.QMessageBox. checkBox ( )
返回类型

QCheckBox

Returns the checkbox shown on the dialog. This is None if no checkbox is set.

另请参阅

setCheckBox()

PySide2.QtWidgets.QMessageBox. clickedButton ( )
返回类型

QAbstractButton

Returns the button that was clicked by the user, or None if the user hit the Esc key and no escape button was set.

exec() hasn’t been called yet, returns nullptr.

范例:

QMessageBox messageBox(this);
QAbstractButton *disconnectButton =
      messageBox.addButton(tr("Disconnect"), QMessageBox::ActionRole);
...
messageBox.exec();
if (messageBox.clickedButton() == disconnectButton) {
    ...
}
												
static PySide2.QtWidgets.QMessageBox. critical ( parent , title , text [ , buttons=QMessageBox.Ok [ , defaultButton=NoButton ] ] )
参数
返回类型

StandardButton

static PySide2.QtWidgets.QMessageBox. critical ( parent , title , text , button0 , button1 )
参数
返回类型

int

PySide2.QtWidgets.QMessageBox. defaultButton ( )
返回类型

QPushButton

Returns the button that should be the message box’s default button 。返回 nullptr 若未设置默认按钮。

PySide2.QtWidgets.QMessageBox. detailedText ( )
返回类型

unicode

另请参阅

setDetailedText()

PySide2.QtWidgets.QMessageBox. escapeButton ( )
返回类型

QAbstractButton

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

默认情况下, QMessageBox attempts to automatically detect an escape button as follows:

  1. If there is only one button, it is made the escape button.

  2. If there is a Cancel button, it is made the escape button.

  3. On macOS only, if there is exactly one button with the role RejectRole , it is made the escape button.

When an escape button could not be automatically detected, pressing Esc has no effect.

PySide2.QtWidgets.QMessageBox. icon ( )
返回类型

Icon

另请参阅

setIcon()

PySide2.QtWidgets.QMessageBox. iconPixmap ( )
返回类型

QPixmap

另请参阅

setIconPixmap()

static PySide2.QtWidgets.QMessageBox. information ( parent , title , text [ , buttons=QMessageBox.Ok [ , defaultButton=NoButton ] ] )
参数
返回类型

StandardButton

static PySide2.QtWidgets.QMessageBox. information ( parent , title , text , button0 [ , button1=NoButton ] )
参数
返回类型

StandardButton

PySide2.QtWidgets.QMessageBox. informativeText ( )
返回类型

unicode

PySide2.QtWidgets.QMessageBox. open ( receiver , member )
参数
  • receiver QObject

  • member – str

打开对话框并连接其 finished() or buttonClicked() signal to the slot specified by receiver and member 。若槽在 member has a pointer for its first parameter the connection is to buttonClicked() , otherwise the connection is to finished() .

信号将断开槽连接,当对话框被关闭时。

static PySide2.QtWidgets.QMessageBox. question ( parent , title , text , button0 , button1 )
参数
返回类型

int

static PySide2.QtWidgets.QMessageBox. question ( parent , title , text [ , buttons=QMessageBox.StandardButtons(Yes | No) [ , defaultButton=NoButton ] ] )
参数
返回类型

StandardButton

PySide2.QtWidgets.QMessageBox. removeButton ( button )
参数

button QAbstractButton

移除 button 从按钮框但不删除它。

PySide2.QtWidgets.QMessageBox. setButtonText ( button , text )
参数
  • button int

  • text – unicode

Sets the text of the message box button button to text . Setting the text of a button that is not in the message box is silently ignored.

使用 addButton() 代替。

另请参阅

buttonText()

PySide2.QtWidgets.QMessageBox. setCheckBox ( cb )
参数

cb QCheckBox

Sets the checkbox cb on the message dialog. The message box takes ownership of the checkbox. The argument cb 可以是 None to remove an existing checkbox from the message box.

另请参阅

checkBox()

PySide2.QtWidgets.QMessageBox. setDefaultButton ( button )
参数

button StandardButton

Sets the message box’s default button to button .

PySide2.QtWidgets.QMessageBox. setDefaultButton ( button )
参数

button QPushButton

Sets the message box’s default button to button .

PySide2.QtWidgets.QMessageBox. setDetailedText ( text )
参数

text – unicode

另请参阅

detailedText()

PySide2.QtWidgets.QMessageBox. setEscapeButton ( button )
参数

button QAbstractButton

Sets the button that gets activated when the Escape key is pressed to button .

PySide2.QtWidgets.QMessageBox. setEscapeButton ( button )
参数

button StandardButton

Sets the buttons that gets activated when the Escape key is pressed to button .

PySide2.QtWidgets.QMessageBox. setIcon ( arg__1 )
参数

arg__1 Icon

另请参阅

icon()

PySide2.QtWidgets.QMessageBox. setIconPixmap ( pixmap )
参数

pixmap QPixmap

另请参阅

iconPixmap()

PySide2.QtWidgets.QMessageBox. setInformativeText ( text )
参数

text – unicode

另请参阅

informativeText()

PySide2.QtWidgets.QMessageBox. setStandardButtons ( buttons )
参数

buttons StandardButtons

另请参阅

standardButtons()

PySide2.QtWidgets.QMessageBox. setText ( text )
参数

text – unicode

另请参阅

text()

PySide2.QtWidgets.QMessageBox. setTextFormat ( format )
参数

format TextFormat

另请参阅

textFormat()

PySide2.QtWidgets.QMessageBox. setTextInteractionFlags ( flags )
参数

flags TextInteractionFlags

PySide2.QtWidgets.QMessageBox. setWindowModality ( windowModality )
参数

windowModality WindowModality

此函数投影 setWindowModality() .

Sets the modality of the message box to windowModality .

On macOS, if the modality is set to WindowModal and the message box has a parent, then the message box will be a Sheet ,否则消息框将是标准对话框。

PySide2.QtWidgets.QMessageBox. setWindowTitle ( title )
参数

title – unicode

此函数投影 setWindowTitle() .

Sets the title of the message box to title . On macOS, the window title is ignored (as required by the macOS Guidelines).

PySide2.QtWidgets.QMessageBox. standardButton ( button )
参数

button QAbstractButton

返回类型

StandardButton

Returns the standard button enum value corresponding to the given button ,或 NoButton 若给定 button isn’t a standard button.

PySide2.QtWidgets.QMessageBox. standardButtons ( )
返回类型

StandardButtons

static PySide2.QtWidgets.QMessageBox. standardIcon ( icon )
参数

icon Icon

返回类型

QPixmap

Returns the pixmap used for a standard icon. This allows the pixmaps to be used in more complex message boxes. icon specifies the required icon, e.g. 询问 , Information , 警告 or Critical .

调用 standardIcon() with SP_MessageBoxInformation etc. instead.

PySide2.QtWidgets.QMessageBox. text ( )
返回类型

unicode

另请参阅

setText()

PySide2.QtWidgets.QMessageBox. textFormat ( )
返回类型

TextFormat

另请参阅

setTextFormat()

PySide2.QtWidgets.QMessageBox. textInteractionFlags ( )
返回类型

TextInteractionFlags

static PySide2.QtWidgets.QMessageBox. warning ( parent , title , text [ , buttons=QMessageBox.Ok [ , defaultButton=NoButton ] ] )
参数
返回类型

StandardButton

static PySide2.QtWidgets.QMessageBox. warning ( parent , title , text , button0 , button1 )
参数
返回类型

int