The QMessageBox class provides a modal dialog with a short message, an icon, and some buttons.
More...
Detailed Description
The QMessageBox class provides a modal dialog with a short message, an icon, and some buttons.
Message boxes are used to provide informative messages and to ask
simple questions.
QMessageBox provides a range of different messages, arranged roughly
along two axes: severity and complexity.
Severity is
| Information
| for message boxes that are part of normal operation
|
| Warning
| for message boxes that tell the user about unusual errors
|
| Critical
| for message boxes that tell the user about critical errors
|
The message box has a different icon for each of the severity levels.
Complexity is one button (OK) for a simple messages, or two or even
three buttons for questions.
There are static functions for common cases.
Examples:
If a program is unable to find a supporting file, but can do perfectly
well without it:
QMessageBox::information( this, "Application name",
"Unable to find the user preferences file.\n"
"The factory default will be used instead." );
warning() can be used to tell the user about unusual errors, or
errors which can't be easily fixed:
switch( QMessageBox::warning( this, "Application name",
"Could not connect to the <mumble> server.\n"
"This program can't function correctly "
"without the server.\n\n",
"Retry",
"Quit", 0, 0, 1 ) )
case 0: // The user clicked the Retry again button or pressed Enter
// try again
break;
case 1: // The user clicked the Quit or pressed Escape
// exit
break;
}
The text part of all message box messages can be either rich text or
plain text. If you specify a rich text formatted string, it will be
rendered using the default stylesheet. See
QStyleSheet::defaultSheet() for details. With certain strings that
contain XML meta characters, the auto-rich text detection may fail,
interpreting plain text incorrectly as rich text. In these rare
cases, use QStyleSheet::convertFromPlainText() to convert your plain
text string to a visually equivalent rich text string or set the
text format explicitly with setTextFormat().
Note that the Microsoft Windows User Interface Guidelines strongly
recommend using the application name as the window's caption.
Below are more examples of how to use the static member functions.
After these examples you will find an overview of the non-static
member functions.
Exiting a program is part of its normal operation. If there is
unsaved data the user probably should be asked if they want to save
the data. For example:
switch( QMessageBox::information( this, "Application name here",
"The document contains unsaved changes\n"
"Do you want to save the changes before exiting?",
"&Save", "&Discard", "Cancel",
0, // Enter == button 0
2 ) ) { // Escape == button 2
case 0: // Save clicked or Alt+S pressed or Enter pressed.
// save
break;
case 1: // Discard clicked or Alt+D pressed
// don't save but exit
break;
case 2: // Cancel clicked or Alt+C pressed or Escape pressed
// don't exit
break;
}
The application name is used as the window caption in accordance with
the Microsoft recommendation. The Escape button cancels the entire
exit operation, and pressing Enter causes the changes to be saved
before the exit occurs.
Disk full errors are unusual (in a perfect world, they are) and they
certainly can be hard to correct. This example uses predefined buttons
instead of hard-coded button texts:
switch( QMessageBox::warning( this, "Application name here",
"Could not save the user preferences,\n"
"because the disk is full. You can delete\n"
"some files and press Retry, or you can\n"
"abort the Save Preferences operation.",
QMessageBox::Retry | QMessageBox::Default,
QMessageBox::Abort | QMessageBox::Escape )) {
case QMessageBox::Retry: // Retry clicked or Enter pressed
// try again
break;
case QMessageBox::Abort: // Abort clicked or Escape pressed
// abort
break;
}
The critical() function should be reserved for critical errors. In
this example errorDetails is a QString or const char*, and QString
is used to concatenate several strings:
QMessageBox::critical( 0, "Application name here",
QString("An internal error occurred. Please ") +
"call technical support at 123456789 and report\n"+
"these numbers:\n\n" + errorDetails +
"\n\n<Application> will now exit." );
In this example an OK button is displayed.
QMessageBox provides a very simple About box, which displays an
appropriate icon and the string you provide:
QMessageBox::about( this, "About <Application>",
"<Application> is a <one-paragraph blurb>\n\n"
"Copyright 1951-2002 Such-and-such. "
"<License words here.>\n\n"
"For technical support, call 123456789 or see\n"
"http://www.such-and-such.com/Application/\n" );
See about() for more information.
If you want your users to know that the application is built using
Qt (so that they know you use high quality tools:) you might like to
add an "About Qt" menu option under the Help menu to invoke
aboutQt().
If none of the standard message boxes is suitable, you can create a
QMessageBox from scratch and with custom button texts:
QMessageBox mb( "Application name here",
"Saving the file will overwrite the original file on the disk.\n"
"Do you really want to save?",
QMessageBox::Information,
QMessageBox::Yes | QMessageBox::Default,
QMessageBox::No,
QMessageBox::Cancel | QMessageBox::Escape );
mb.setButtonText( QMessageBox::Yes, "Save" );
mb.setButtonText( QMessageBox::No, "Discard" );
switch( mb.exec() ) {
case QMessageBox::Yes:
// save and exit
break;
case QMessageBox::No:
// exit without saving
break;
case QMessageBox::Cancel:
// don't save and don't exit
break;
}
QMessageBox defines two enum types: Icon and an unnamed button type.
Icon defines the Information, Warning, and Critical icons for
each GUI style. It is used by the constructor and by the static
member functions information(), warning() and critical(). A function
called standardIcon() gives you access to the various icons.
The button types are:
- Ok - the default for single-button message boxes
- Cancel - note that this is not automatically Escape
- Yes
- No
- Abort
- Retry
- Ignore
Button types can be combined with two modifiers by using OR, '|':
- Default - makes pressing Enter equivalent to
clicking this button. Normally used with Ok, Yes or similar.
- Escape - makes pressing Escape equivalent to clicking this button.
Normally used with Abort, Cancel or similar.
The text(), icon() and iconPixmap() functions provide access to the
current text and pixmap of the message box. The setText(), setIcon()
and setIconPixmap() let you change it. The difference between
setIcon() and setIconPixmap() is that the former accepts a
QMessageBox::Icon and can be used to set standard icons, whereas the
latter accepts a QPixmap and can be used to set custom icons.
setButtonText() and buttonText() provide access to the buttons.
QMessageBox has no signals or slots.
See also QDialog, Isys on error messages, GUI Design Handbook: Message Box and Dialog Classes.
Member Type Documentation
QMessageBox::Icon
This enum includes provides the following values:
- QMessageBox::NoIcon - the message box does not have any icon.
- 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.
Member Function Documentation
QMessageBox::QMessageBox ( QWidget * parent = 0, const char * name = 0 )
Constructs a message box with no text and a button with the label "OK".
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
The parent and name arguments are passed to the QDialog constructor.
QMessageBox::QMessageBox ( const QString & caption, const QString & text, Icon icon, int button0, int button1, int button2, QWidget * parent = 0, const char * name = 0, bool modal = TRUE, WFlags f = WStyle_DialogBorder )
Constructs a message box with a caption, a text, an icon, and up
to three buttons.
The icon must be one of the following:
- QMessageBox::NoIcon
- QMessageBox::Information
- QMessageBox::Warning
- QMessageBox::Critical
Each button, button0, button1 and button2, can have one of
the following values:
- QMessageBox::NoButton
- QMessageBox::Ok
- QMessageBox::Cancel
- QMessageBox::Yes
- QMessageBox::No
- QMessageBox::Abort
- QMessageBox::Retry
- QMessageBox::Ignore
Use QMessageBox::NoButton for the later parameters to have fewer than
three buttons in your message box.
One of the buttons can be OR-ed with the QMessageBox::Default flag
to make it the default button (clicked when Enter is pressed).
One of the buttons can be OR-ed with the QMessageBox::Escape flag
to make it the cancel or close button (clicked when Escape is pressed).
Example:
QMessageBox mb( "Application Name",
"Hardware failure.\n\nDisk error detected\nDo you want to stop?",
QMessageBox::NoIcon,
QMessageBox::Yes | QMessageBox::Default,
QMessageBox::No | QMessageBox::Escape
QMessageBox::NoButton );
if ( mb.exec() == QMessageBox::No )
// try again
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
If modal is TRUE the message becomes modal; otherwise it becomes
modeless.
The parent, name, modal, and f arguments are passed to the
QDialog constructor.
See also caption, text and icon.
QMessageBox::~QMessageBox ()
Destroys the message box.
void QMessageBox::about ( QWidget * parent, const QString & caption, const QString & text ) [static]
Displays a simple about box with caption caption and
text text. The about box's parent is parent.
about() looks for a suitable icon in four locations:
- It prefers parent->icon()
if that exists.
- If not, it tries the top-level widget
containing parent.
- If that fails, it tries the main widget.
- As a last resort it uses the Information icon.
The about box has a single button labelled OK.
See also QWidget::icon and QApplication::mainWidget().
Examples: action/application.cpp, application/application.cpp, chart/chartform.cpp, helpviewer/helpwindow.cpp, mdi/application.cpp, menu/menu.cpp and themes/themes.cpp.
void QMessageBox::aboutQt ( QWidget * parent, const QString & caption = QString::null ) [static]
Displays a simple message box about Qt, with caption caption and centered over parent (if parent is not 0). The
message includes the version number of Qt being used by the
application.
This is useful for inclusion in the Help menu. See the
examples/menu/menu.cpp example.
Examples: action/application.cpp, application/application.cpp, chart/chartform.cpp, helpviewer/helpwindow.cpp, menu/menu.cpp, themes/themes.cpp and trivial/trivial.cpp.
void QMessageBox::adjustSize () [virtual]
Adjusts the size of the message box to fit the contents just before
QDialog::exec() or QDialog::show() is called.
This function will not be called if the message box has been explicitly
resized before showing it.
Reimplemented from QWidget.
QString QMessageBox::buttonText ( int button ) const
Returns the text of the message box button button, or null if the
message box does not contain the button.
See also setButtonText().
int QMessageBox::critical ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 ) [static]
Opens a critical message box with the caption caption and the
text text. The dialog may have up to three buttons. Each of the
button parameters, button0, button1 and button2 may be set to
one of the following values:
- QMessageBox::NoButton
- QMessageBox::Ok
- QMessageBox::Cancel
- QMessageBox::Yes
- QMessageBox::No
- QMessageBox::Abort
- QMessageBox::Retry
- QMessageBox::Ignore
If you don't want all three buttons, set the last button, or last two
buttons to QMessageBox::NoButton.
Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.) of
the button that was clicked.
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
See also information() and warning().
Examples: network/ftpclient/ftpmainwindow.cpp, process/process.cpp and xml/outliner/outlinetree.cpp.
int QMessageBox::critical ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString::null, const QString & button1Text = QString::null, const QString & button2Text = QString::null, int defaultButtonNumber = 0, int escapeButtonNumber = -1 ) [static]
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
Displays a critical error message box with a caption, a text, and
1, 2 or 3 buttons. Returns the number of the button that was clicked
(0, 1 or 2).
button0Text is the text of the first button, and is optional. If
button0Text is not supplied, "OK" (translated) will be used.
button1Text is the text of the second button, and is optional, and
button2Text is the text of the third button, and is optional. defaultButtonNumber (0, 1 or 2) is the index of the default button;
pressing Return or Enter is the same as clicking the default button.
It defaults to 0 (the first button). escapeButtonNumber is the
index of the Escape button; pressing Escape is the same as clicking
this button. It defaults to -1 (pressing Escape does nothing);
supply 0, 1, or 2 to make pressing Escape equivalent to clicking
the relevant button.
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
See also information() and warning().
Icon QMessageBox::icon () const
Returns the message box's icon.
See the "icon" property for details.
const QPixmap * QMessageBox::iconPixmap () const
Returns the current icon.
See the "iconPixmap" property for details.
int QMessageBox::information ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1 = 0, int button2 = 0 ) [static]
Opens an information message box with the caption caption and the
text text. The dialog may have up to three buttons. Each of the
buttons, button0, button1 and button2 may be set to
one of the following values:
- QMessageBox::NoButton
- QMessageBox::Ok
- QMessageBox::Cancel
- QMessageBox::Yes
- QMessageBox::No
- QMessageBox::Abort
- QMessageBox::Retry
- QMessageBox::Ignore
If you don't want all three buttons, set the last button, or last two
buttons to QMessageBox::NoButton.
Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.) of
the button that was clicked.
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
See also warning() and critical().
Examples: action/application.cpp, application/application.cpp, chart/chartform.cpp, dirview/dirview.cpp, fileiconview/qfileiconview.cpp, picture/picture.cpp and qwerty/qwerty.cpp.
int QMessageBox::information ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString::null, const QString & button1Text = QString::null, const QString & button2Text = QString::null, int defaultButtonNumber = 0, int escapeButtonNumber = -1 ) [static]
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
Displays an information message box with caption caption, text text and one, two or three buttons. Returns the index of the button
that was clicked (0, 1 or 2).
button0Text is the text of the first button, and is optional. If
button0Text is not supplied, "OK" (translated) will be used.
button1Text is the text of the second button, and is optional.
button2Text is the text of the third button, and is optional. defaultButtonNumber (0, 1 or 2) is the index of the default button;
pressing Return or Enter is the same as clicking the default button.
It defaults to 0 (the first button). escapeButtonNumber is the
index of the Escape button; pressing Escape is the same as clicking
this button. It defaults to -1 (pressing Escape does nothing);
supply 0, 1 or 2 to make pressing Escape equivalent to clicking
the relevant button.
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
See also warning() and critical().
int QMessageBox::message ( const QString & caption, const QString & text, const QString & buttonText = QString::null, QWidget * parent = 0, const char * = 0 ) [static]
This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code.
Opens a modal message box directly using the specified parameters.
Please use information(), warning() or critical() instead.
Example: grapher/grapher.cpp.
bool QMessageBox::query ( const QString & caption, const QString & text, const QString & yesButtonText = QString::null, const QString & noButtonText = QString::null, QWidget * parent = 0, const char * = 0 ) [static]
This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code.
Queries the user using a modal message box with two buttons.
Note that caption is not always shown, it depends on the window manager.
Please use information(), warning() or critical() instead.
void QMessageBox::setButtonText ( int button, const QString & text )
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.
See also buttonText().
void QMessageBox::setIcon ( Icon )
Sets the message box's icon.
See the "icon" property for details.
void QMessageBox::setIconPixmap ( const QPixmap & )
Sets the current icon.
See the "iconPixmap" property for details.
void QMessageBox::setText ( const QString & )
Sets the message box text to be displayed.
See the "text" property for details.
void QMessageBox::setTextFormat ( TextFormat )
Sets the format of the text displayed by the message box.
See the "textFormat" property for details.
QPixmap QMessageBox::standardIcon ( Icon icon ) [static]
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. QMessageBox::Information,
QMessageBox::Warning or QMessageBox::Critical.
QPixmap QMessageBox::standardIcon ( Icon icon, GUIStyle style ) [static]
This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code.
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. QMessageBox::Information,
QMessageBox::Warning or QMessageBox::Critical.
style is unused.
QString QMessageBox::text () const
Returns the message box text to be displayed.
See the "text" property for details.
TextFormat QMessageBox::textFormat () const
Returns the format of the text displayed by the message box.
See the "textFormat" property for details.
int QMessageBox::warning ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 ) [static]
Opens a warning message box with the caption caption and the
text text. The dialog may have up to three buttons. Each of the
button parameters, button0, button1 and button2 may be set to
one of the following values:
- QMessageBox::NoButton
- QMessageBox::Ok
- QMessageBox::Cancel
- QMessageBox::Yes
- QMessageBox::No
- QMessageBox::Abort
- QMessageBox::Retry
- QMessageBox::Ignore
If you don't want all three buttons, set the last button, or last two
buttons to QMessageBox::NoButton.
Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.) of
the button that was clicked.
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
See also information() and critical().
Examples: chart/chartform.cpp, i18n/main.cpp, network/mail/smtp.cpp, qwerty/qwerty.cpp, showimg/showimg.cpp and sound/sound.cpp.
int QMessageBox::warning ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString::null, const QString & button1Text = QString::null, const QString & button2Text = QString::null, int defaultButtonNumber = 0, int escapeButtonNumber = -1 ) [static]
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
Displays a warning message box with a caption, a text, and
1, 2 or 3 buttons. Returns the number of the button that was
clicked (0, 1, or 2).
button0Text is the text of the first button, and is optional. If
button0Text is not supplied, "OK" (translated) will be used.
button1Text is the text of the second button, and is optional, and
button2Text is the text of the third button, and is optional. defaultButtonNumber (0, 1 or 2) is the index of the default button;
pressing Return or Enter is the same as clicking the default button.
It defaults to 0 (the first button). escapeButtonNumber is the
index of the Escape button; pressing Escape is the same as clicking
this button. It defaults to -1 (pressing Escape does nothing);
supply 0, 1, or 2 to make pressing Escape equivalent to clicking
the relevant button.
If parent is 0, the message box becomes an application-global
modal dialog box. If parent is a widget, the message box becomes
modal relative to parent.
See also information() and critical().
Property Documentation
This property holds the message box's icon.
The icon of the message box can be one of the following predefined icons:
- QMessageBox::NoIcon
- QMessageBox::Information
- QMessageBox::Warning
- QMessageBox::Critical
The actual pixmap used for displaying the icon depends on the current
GUI style. You can also set a custom
pixmap icon using the QMessageBox::iconPixmap property. The
default icon is QMessageBox::NoIcon.
See also iconPixmap.
Set this property's value with setIcon() and get this property's value with icon().
This property holds the current icon.
The icon currently used by the message box. Note that
it's often hard to draw one pixmap that looks appropriate in both
Motif and Windows GUI styles; you may want to draw two pixmaps.
See also icon.
Set this property's value with setIconPixmap() and get this property's value with iconPixmap().
This property holds the message box text to be displayed.
The text will be interpreted either as a plain text or as rich
text, depending on the text format setting (QMessageBox::textFormat). The
default setting is AutoText, i.e. the message box will try to
auto-detect the format of the text.
The default value of this property is QString::null.
See also textFormat.
Set this property's value with setText() and get this property's value with text().
This property holds the format of the text displayed by the message box.
The current text format used by the message box.
See the Qt::TextFormat enum for an explanation of the possible options.
The default format is AutoText.
See also text.
Set this property's value with setTextFormat() and get this property's value with textFormat().
This file is part of the Qt toolkit.
Copyright © 1995-2002
Trolltech. All Rights Reserved.