enum
Icon
{ NoIcon = 0, Information = 1, Warning = 2, Critical = 3 }
QMessageBox
( QWidget * parent = 0, const char * name = 0 )
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 )
静态公有成员
int
information
( QWidget * parent, const QString & caption, const QString & text, int button0, int button1 = 0, int button2 = 0 )
int
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 )
int
warning
( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 )
int
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 )
int
critical
( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 )
int
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 )
void
about
( QWidget * parent, const QString & caption, const QString & text )
void
aboutQt
( QWidget * parent, const QString & caption = QString::null )
int message ( const QString & caption, const QString & text, const QString & buttonText = QString::null, QWidget * parent = 0, const char * = 0 )
(obsolete)
bool query ( const QString & caption, const QString & text, const QString & yesButtonText = QString::null, const QString & noButtonText = QString::null, QWidget * parent = 0, const char * = 0 )
(obsolete)
QPixmap standardIcon ( Icon icon, GUIStyle style )
(obsolete)
QMessageBox类提供了一个有一条简短消息、一个图标和一些按钮的模式对话框。
消息框用于提供情报信息并且问一些简单的问题。
QMessageBox提供了一个不同信息的范围,大致按两个轴进行排列:严重程度和复杂程度。
按严重程度分:
用于普通操作的一部分的消息框
用于告诉用户一些不常出现的错误的消息框
用于告诉用户严重的错误的消息框
对于每一个严重程度,消息框都有不同的图标。
按复杂程度分为一个按钮(确定)的简单消息、或者用于提问的两个或者甚至三个按钮。
还有一些用于常用情况的静态函数。
如果程序不能找到一个支持文件,但是能在没有它的情况在做得很好:
QMessageBox::
information
( this, "Application name",
"Unable to find the user preferences file.\n"
"The factory default will be used instead." );
warning
()可以用于告诉用户一些不常出现的错误,或者不容易被修复的错误:
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: // 用户点击“再试”或者按下回车键
// 再次尝试
break;
case 1: // 用户点击“退出”或者按下Esc键
// 退出
break;
所有消息框的消息的文本部分都可以是多信息文本或者一般文本。如果拟制定一个多信息文本格式字符串,它将会被使用默认样式单来呈现。详细情况请参考
QStyleSheet::defaultSheet
()。对于包含XML元字符的特定字符串,自动多信息文本检测可能会失败,会把一般文本不正确地解释为多信息文本。在这种情况下,可以使用
QStyleSheet::convertFromPlainText
()来把你的一般文本字符串转化为在视觉上一致的多信息文本或者明确地通过
setTextFormat
()设置文本格式。
注意微软视窗用户界面指南强烈建议在把应用程序名称作为这个窗口的标题。
下面是更多的关于如何使用静态成员函数地实例。在这些实例之后,你将会找到非静态成员函数的概述。
退出程序是正常操作的一部分。如果存在没有保存地数据,用户可能应该被被询问他们是否想保存数据。例如:
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被点击或者Alt+S被按下或者Enter被按下。
// 保存
break;
case 1: // Discard被点击或者Alt+D被按下。
// 不保存但退出
break;
case 2: // Cancel被点击或者Alt+C被按下或者Escape被按下。
// 不退出
break;
为了和微软的建议一致,应用程序的名称被作为窗口标题。Escape按钮撤销整个退出操作,并且按下Enter导致在退出发生之前这些变化被保存。
磁盘已满错误是不常见的(在完美的世界中,它们是存在的)并且它们通常很难变为正确。这个实例使用了预定义的按钮来替换了写在代码中的按钮文本:
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被点击或者Enter被按下。
// 再次尝试
break;
case QMessageBox::Abort: // Abort被点击或者Escape被按下。
// 放弃
break;
critical
()函数应用被用于保留严重错误。在这个实例中,errorDetails是
QString
或者const char*,并且QString被用于连接几个字符串:
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." );
在这个实例中,一个“OK”按钮被显示。
QMessageBox提供了一个非常简单的关于框,可以显示你提供的适当的图标和文本。
QMessageBox::
about
( this, "About <Application>",
"<Application> is a <one-paragraph blurb>\n\n"
"<License words here.>\n\n"
"For technical support, call 123456789 or see\n"
"http://www.such-and-such.com/Application/\n" );
更多信息请参考
about
()。
如果你想让用户知道这个应用程序是使用Qt构建的(这样他们就会知道你使用的是高质量的工具):你也许喜欢在帮助菜单下的“关于Qt”菜单选项来调用
aboutQt
()。
如果没有任何标准消息框是合适地,你可以自己手工创建一个QMessageBox并且自己定义按钮文本:
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:
// 保存并且退出
break;
case QMessageBox::No:
// 不保存退出
break;
case QMessageBox::Cancel:
// 不保存并且不退出
break;
QMessageBox定义了两个枚举变量:Icon和没有名称的按钮类型。Icon为每一个图形用户界面风格定义了
Information
、
Warning
和
Critical
图标。它被构造函数和
information
()、
warning
()和
critical
()静态函数使用。叫做
standardIcon
()的函数让你能够访问不同的图标。
按钮类型有:
Ok - 单按钮消息框地默认值
Cancel - 注意这个
不是
自动和Escape关联的
Abort
Retry
Ignore
按钮类型可以由上述类型和下面两个修饰成分使用或“|”来进行组合。
Default - 让按Enter键等于点击这个按钮。通常用于OK、Yes或者其它相似的。
Escape - 让按Escape键等于点击这个按钮。通常用于Abort、Cancel或者其它相似的。
text
()、
icon
()和
iconPixmap
()函数提供了对消息框的当前文本和像素映射的访问。
setButtonText
()和
buttonText
()提供了对按钮的访问。
setText
()、
setIcon
()和
setIconPixmap
()让你能够修改它。setIcon()和setIconPixmap()的不同是前者接受QMessageBox::Icon并且用于设置标准图标,而后者接受
QPixmap
并且用于设置自定义图标。
QMessageBox没有信号和槽。
也可以参考
QDialog
、
Isys on error messages
、
图形用户界面设计手册:消息框
和
对话框类
。
成员类型文档
这个枚举变量包含被提供的如下值:
QMessageBox::NoIcon
- 消息框没有任何图标。
QMessageBox::Information
- 一个指出这个消息没有超出普通范围的图标。
QMessageBox::Warning
- 一个指出这个消息是警告,但是还能被处理的图标。
QMessageBox::Critical
- 一个指出这个消息意味着严重问题的图标。
成员函数文档
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
parent
和
name
参数被传递给
QDialog
构造函数。
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 )
构造一个标题为
caption
、文本为
text
、图标为
icon
并且最多为三个按钮的消息框。
icon
必须为如下之一:
QMessageBox::NoIcon
QMessageBox::Information
QMessageBox::Warning
QMessageBox::Critical
每一个按钮,
button0
、
button1
和
button2
为如下之一:
QMessageBox::NoButton
QMessageBox::Ok
QMessageBox::Cancel
QMessageBox::Yes
QMessageBox::No
QMessageBox::Abort
QMessageBox::Retry
QMessageBox::Ignore
如果你的消息框少于三个按钮,QMessageBox::NoButton用于靠后的参数。
一个按钮可以和
QMessageBox::Default
标记进行或运算,这使得它成为默认按钮(当Enter被按下时,它被点击)。
一个按钮可以和
QMessageBox::Escape
标记进行或运算,这使得它成为撤销或者关闭按钮(当Escape被按下时,它被点击)。
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 )
// 再次尝试
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
如果
modal
为真,这个消息框变为模式的,否则它变为非模式的。
parent
、
name
、
modal
和
f
参数被传递给
QDialog
构造函数。
也可以参考
caption
、
text
和
icon
。
about
()在四个位置查找合适的图标:
如果
parent->icon()
存在,它会首先使用它。
如果没有,它会尝试一下包含
parent
的顶级窗口部件。
如果这个也失败了,它会尝试
主窗口部件
。
作为最后的手段,它使用信息图标。
关于框有一个标签为OK的单一按钮。
也可以参考
QWidget::icon
和
QApplication::mainWidget
()。
实例:
action/application.cpp
、
application/application.cpp
、
chart/chartform.cpp
、
helpviewer/helpwindow.cpp
、
mdi/application.cpp
、
menu/menu.cpp
和
themes/themes.cpp
。
void
QMessageBox::aboutQt (
QWidget
* parent, const
QString
& caption = QString::null )
[静态]
显示标题为
caption
并且放在
parent
(如果
parent
不为0)的中间关于Qt的简单消息框。这个消息包含这个应用程序正在使用的Qt的版本号。
这个会被包含在帮助菜单中。关于实例请参考examples/menu/menu.cpp。
实例:
action/application.cpp
、
application/application.cpp
、
chart/chartform.cpp
、
helpviewer/helpwindow.cpp
、
menu/menu.cpp
、
themes/themes.cpp
和
trivial/trivial.cpp
。
void
QMessageBox::adjustSize ()
[虚]
仅在
QDialog::exec
()或
QDialog::show
()被调用之前调节消息框的大小来适合内容。
如果消息框在显示之前已经被明显地重新定义大小,这个函数就不会被调用。
从
QWidget
中重新实现。
QString
QMessageBox::buttonText ( int button ) const
返回消息框按钮
button
的文本,或者如果消息框没有包含这个按钮返回零。
也可以参考
setButtonText
()。
int
QMessageBox::critical (
QWidget
* parent, const
QString
& caption, const
QString
& text, int button0, int button1, int button2 = 0 )
[静态]
打开一个标题为
caption
并且文本为
text
的严重消息框。这个对话框最多有三个按钮。每个按钮参数
button0
、
button1
和
button2
被设置为下列各值之一:
QMessageBox::NoButton
QMessageBox::Ok
QMessageBox::Cancel
QMessageBox::Yes
QMessageBox::No
QMessageBox::Abort
QMessageBox::Retry
QMessageBox::Ignore
如果你不想要三个按钮,设置最后一个按钮或者最后两个按钮为QMessageBox::NoButton。
返回被点击的按钮地标识(QMessageBox::Ok或QMessageBox::No等等)。
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
也可以参考
information
()和
warning
()。
实例:
network/ftpclient/ftpmainwindow.cpp
、
process/process.cpp
和
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 )
[静态]
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
显示一个标题为
caption
、文本为
text
并且按钮分别为1、2、3的严重消息对话框。返回被点击的按钮的数字(0、1或2)。
button0Text
为第一个按钮的文本并且它是可选的。如果
button0Text
没有被提供,“OK”(被翻译的)将被使用。
button1Text
为第二个按钮的文本并且它是可选的并且
button2Text
为第三个按钮的文本并且它是可选的。
defaultButtonNumber
(0、1或2)是默认按钮的索引,按下Return或者Enter和点击这个默认按钮是相同的。它默认为0(第一个按钮)。
escapeButtonNumber
是Escape按钮的索引,按下Escape和点击这个按钮是相同的。它默认为-1(就是按下Escape什么也不做),提供0、1或2使按下Escape等同于按下对应的按钮。
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
也可以参考
information
()和
warning
()。
Icon
QMessageBox::icon () const
返回消息框的图标。详细情况请参考
“icon”
属性。
const
QPixmap
*
QMessageBox::iconPixmap () const
返回当前图标。详细情况请参考
“iconPixmap”
属性。
int
QMessageBox::information (
QWidget
* parent, const
QString
& caption, const
QString
& text, int button0, int button1 = 0, int button2 = 0 )
[静态]
打开一个标题为
caption
并且文本为
text
的信息消息框。这个对话框最多有三个按钮。每个按钮参数
button0
、
button1
和
button2
被设置为下列各值之一:
QMessageBox::NoButton
QMessageBox::Ok
QMessageBox::Cancel
QMessageBox::Yes
QMessageBox::No
QMessageBox::Abort
QMessageBox::Retry
QMessageBox::Ignore
如果你不想要三个按钮,设置最后一个按钮或者最后两个按钮为QMessageBox::NoButton。
返回被点击的按钮地标识(QMessageBox::Ok或QMessageBox::No等等)。
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
也可以参考
warning
()和
critical
()。
实例:
action/application.cpp
、
application/application.cpp
、
chart/chartform.cpp
、
dirview/dirview.cpp
、
fileiconview/qfileiconview.cpp
、
picture/picture.cpp
和
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 )
[静态]
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
显示一个标题为
caption
、文本为
text
并且按钮分别为1、2、3的信息消息对话框。返回被点击的按钮的数字(0、1或2)。
button0Text
为第一个按钮的文本并且它是可选的。如果
button0Text
没有被提供,“OK”(被翻译的)将被使用。
button1Text
为第二个按钮的文本并且它是可选的并且
button2Text
为第三个按钮的文本并且它是可选的。
defaultButtonNumber
(0、1或2)是默认按钮的索引,按下Return或者Enter和点击这个默认按钮是相同的。它默认为0(第一个按钮)。
escapeButtonNumber
是Escape按钮的索引,按下Escape和点击这个按钮是相同的。它默认为-1(就是按下Escape什么也不做),提供0、1或2使按下Escape等同于按下对应的按钮。
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
也可以参考
warning
()和
critical
()。
int
QMessageBox::message ( const
QString
& caption, const
QString
& text, const
QString
& buttonText = QString::null,
QWidget
* parent = 0, const char * = 0 )
[静态]
这个函数是废弃的。
它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
使用特定参数直接打开模式消息框。
请使用
information
()、
warning
()或
critical
()来替代。
实例:
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 )
[静态]
这个函数是废弃的。
它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
使用有两个按钮的模式消息框询问用户。注意
caption
不总是被显示,它依赖于窗口管理器。
请使用
information
()、
warning
()或
critical
()来替代。
void
QMessageBox::setButtonText ( int button, const
QString
& text )
设置消息框按钮
button
的文本为
text
。设置一个没有在消息框中出现的按钮的文本会被默默地忽略。
也可以参考
buttonText
()。
void
QMessageBox::setIcon (
Icon
)
设置消息框的图标。详细情况请参考
“icon”
属性。
void
QMessageBox::setIconPixmap ( const
QPixmap
& )
设置当前图标。详细情况请参考
“iconPixmap”
属性。
void
QMessageBox::setText ( const
QString
& )
设置被显示的消息框文本。详细情况请参考
“text”
属性。
void
QMessageBox::setTextFormat (
TextFormat
)
设置消息框中被显示的文本的格式。详细情况请参考
“textFormat”
属性。
QPixmap
QMessageBox::standardIcon (
Icon
icon )
[静态]
返回标准图标使用的像素映射。这允许这些像素映射用于更复杂的消息框。
icon
指定了所需图标,例如QMessageBox::Information、QMessageBox::Warning或QMessageBox::Critical。
QPixmap
QMessageBox::standardIcon (
Icon
icon,
GUIStyle
style )
[静态]
这个函数是废弃的。
它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
返回标准图标使用的像素映射。这允许这些像素映射用于更复杂的消息框。
icon
指定了所需图标,例如QMessageBox::Information、QMessageBox::Warning或QMessageBox::Critical。
style
不被使用。
QString
QMessageBox::text () const
返回被显示的消息框文本。详细情况请参考
“text”
属性。
TextFormat
QMessageBox::textFormat () const
返回消息框中被显示的文本的格式。详细情况请参考
“textFormat”
属性。
int
QMessageBox::warning (
QWidget
* parent, const
QString
& caption, const
QString
& text, int button0, int button1, int button2 = 0 )
[静态]
打开一个标题为
caption
并且文本为
text
的警告消息框。这个对话框最多有三个按钮。每个按钮参数
button0
、
button1
和
button2
被设置为下列各值之一:
QMessageBox::NoButton
QMessageBox::Ok
QMessageBox::Cancel
QMessageBox::Yes
QMessageBox::No
QMessageBox::Abort
QMessageBox::Retry
QMessageBox::Ignore
如果你不想要三个按钮,设置最后一个按钮或者最后两个按钮为QMessageBox::NoButton。
返回被点击的按钮地标识(QMessageBox::Ok或QMessageBox::No等等)。
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
也可以参考
information
()和
critical
()。
实例:
chart/chartform.cpp
、
i18n/main.cpp
、
network/mail/smtp.cpp
、
qwerty/qwerty.cpp
、
showimg/showimg.cpp
和
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 )
[静态]
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
显示一个标题为
caption
、文本为
text
并且按钮分别为1、2、3的警告消息对话框。返回被点击的按钮的数字(0、1或2)。
button0Text
为第一个按钮的文本并且它是可选的。如果
button0Text
没有被提供,“OK”(被翻译的)将被使用。
button1Text
为第二个按钮的文本并且它是可选的并且
button2Text
为第三个按钮的文本并且它是可选的。
defaultButtonNumber
(0、1或2)是默认按钮的索引,按下Return或者Enter和点击这个默认按钮是相同的。它默认为0(第一个按钮)。
escapeButtonNumber
是Escape按钮的索引,按下Escape和点击这个按钮是相同的。它默认为-1(就是按下Escape什么也不做),提供0、1或2使按下Escape等同于按下对应的按钮。
如果
parent
为0,消息框变为应用程序全局的模式对话框。如果
parent
为一个窗口部件,消息框变为相对于
parent
的模式对话框。
也可以参考
information
()和
critical
()。
Icon
icon
这个属性保存的是消息框的图标。
消息框的图标可以是如下预定义图标的一种:
QMessageBox::NoIcon
QMessageBox::Information
QMessageBox::Warning
QMessageBox::Critical
用于显示图标的实际像素映射依赖于当前
图形用户界面风格
。你也可以使用
QMessageBox::iconPixmap
属性来设置自定义像素映射。默认图标为QMessageBox::NoIcon。
也可以参考
iconPixmap
。
通过
setIcon
()设置属性值并且通过
icon
()来获得属性值。
QPixmap
iconPixmap
这个属性保存的是当前图标。
这个图标正在被这个消息框使用。注意很难绘制一个在Motif和Windows风格中看起来比较一致的像素映射,你也许需要绘制两个像素映射。
也可以参考
icon
。
通过
setIconPixmap
()设置属性值并且通过
iconPixmap
()来获得属性值。
QString
text
This property holds the message box text to be displayed.
这个属性保存的是被显示的消息框文本。
这个文本将被解释为一般文本或者多信息文本,根据文本格式设置(
QMessageBox::textFormat
)。默认设置为
AutoText
,也就是说消息框将会试图自动检测文本格式。
这个属性的默认设置是
QString::null
。
也可以参考
textFormat
。
通过
setText
()设置属性值并且通过
text
()来获得属性值。
TextFormat
textFormat
This property holds the format of the text displayed by the message box.
这个属性保存的是消息框中被显示的文本的格式。
这是当前被消息框使用的文本格式。对于可能选项的解释请参考
Qt::TextFormat
枚举变量。
默认设置是
AutoText
。
也可以参考
text
。
通过
setTextFormat
()设置属性值并且通过
textFormat
()来获得属性值。
这个文件是
Qt工具包
一部分。
Trolltech
。保留所有权利。