主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数 |
QMessageBox类提供了一个有一条简短消息、一个图标和一些按钮的模式对话框。 详情请见……
#include <qmessagebox.h>
继承了QDialog。
消息框用于提供情报信息并且问一些简单的问题。
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" "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" );
更多信息请参考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()的函数让你能够访问不同的图标。
按钮类型有:
按钮类型可以由上述类型和下面两个修饰成分使用或“|”来进行组合。
text()、icon()和iconPixmap()函数提供了对消息框的当前文本和像素映射的访问。
setButtonText()和buttonText()提供了对按钮的访问。setText()、setIcon()和setIconPixmap()让你能够修改它。setIcon()和setIconPixmap()的不同是前者接受QMessageBox::Icon并且用于设置标准图标,而后者接受QPixmap并且用于设置自定义图标。
QMessageBox没有信号和槽。
也可以参考QDialog、Isys on error messages、图形用户界面设计手册:消息框和对话框类。
这个枚举变量包含被提供的如下值:
如果parent为0,消息框变为应用程序全局的模式对话框。如果parent为一个窗口部件,消息框变为相对于parent的模式对话框。
parent和name参数被传递给QDialog构造函数。
icon必须为如下之一:
每一个按钮,button0、button1和button2为如下之一:
如果你的消息框少于三个按钮,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构造函数。
about()在四个位置查找合适的图标:
关于框有一个标签为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。
这个会被包含在帮助菜单中。关于实例请参考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。
如果消息框在显示之前已经被明显地重新定义大小,这个函数就不会被调用。
从QWidget中重新实现。
也可以参考setButtonText()。
如果你不想要三个按钮,设置最后一个按钮或者最后两个按钮为QMessageBox::NoButton。
返回被点击的按钮地标识(QMessageBox::Ok或QMessageBox::No等等)。
如果parent为0,消息框变为应用程序全局的模式对话框。如果parent为一个窗口部件,消息框变为相对于parent的模式对话框。
也可以参考information()和warning()。
实例:network/ftpclient/ftpmainwindow.cpp、process/process.cpp和xml/outliner/outlinetree.cpp。
显示一个标题为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”属性。
返回当前图标。详细情况请参考“iconPixmap”属性。
如果你不想要三个按钮,设置最后一个按钮或者最后两个按钮为QMessageBox::NoButton。
返回被点击的按钮地标识(QMessageBox::Ok或QMessageBox::No等等)。
如果parent为0,消息框变为应用程序全局的模式对话框。如果parent为一个窗口部件,消息框变为相对于parent的模式对话框。
实例:action/application.cpp、application/application.cpp、chart/chartform.cpp、dirview/dirview.cpp、fileiconview/qfileiconview.cpp、picture/picture.cpp和qwerty/qwerty.cpp。
显示一个标题为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()或critical()来替代。
这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
使用有两个按钮的模式消息框询问用户。注意caption不总是被显示,它依赖于窗口管理器。
请使用information()、warning()或critical()来替代。
也可以参考buttonText()。
设置消息框的图标。详细情况请参考“icon”属性。
设置当前图标。详细情况请参考“iconPixmap”属性。
设置被显示的消息框文本。详细情况请参考“text”属性。
设置消息框中被显示的文本的格式。详细情况请参考“textFormat”属性。
这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
返回标准图标使用的像素映射。这允许这些像素映射用于更复杂的消息框。icon指定了所需图标,例如QMessageBox::Information、QMessageBox::Warning或QMessageBox::Critical。
style不被使用。
返回被显示的消息框文本。详细情况请参考“text”属性。
返回消息框中被显示的文本的格式。详细情况请参考“textFormat”属性。
如果你不想要三个按钮,设置最后一个按钮或者最后两个按钮为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。
显示一个标题为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()。
这个属性保存的是消息框的图标。
消息框的图标可以是如下预定义图标的一种:
用于显示图标的实际像素映射依赖于当前图形用户界面风格。你也可以使用QMessageBox::iconPixmap属性来设置自定义像素映射。默认图标为QMessageBox::NoIcon。
也可以参考iconPixmap。
通过setIcon()设置属性值并且通过icon()来获得属性值。
这个属性保存的是当前图标。
这个图标正在被这个消息框使用。注意很难绘制一个在Motif和Windows风格中看起来比较一致的像素映射,你也许需要绘制两个像素映射。
也可以参考icon。
通过setIconPixmap()设置属性值并且通过iconPixmap()来获得属性值。
This property holds the message box text to be displayed. 这个属性保存的是被显示的消息框文本。
这个文本将被解释为一般文本或者多信息文本,根据文本格式设置(QMessageBox::textFormat)。默认设置为AutoText,也就是说消息框将会试图自动检测文本格式。
这个属性的默认设置是QString::null。
也可以参考textFormat。
通过setText()设置属性值并且通过text()来获得属性值。
This property holds the format of the text displayed by the message box. 这个属性保存的是消息框中被显示的文本的格式。
这是当前被消息框使用的文本格式。对于可能选项的解释请参考Qt::TextFormat枚举变量。
默认设置是AutoText。
也可以参考text。
通过setTextFormat()设置属性值并且通过textFormat()来获得属性值。
这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。
Copyright © 2002 Trolltech | Trademarks | 译者:Cavendish | Qt 3.0.5版
|