说到QMessageBox消息框,大家都非常熟悉了。它们实现的生成及运行原理,或许很少过问,能用就行。不说那么多了,现在还是了解一下QMessageBox,QMessageBox提供了许多标准的按钮,创建消息框时,可以知道默认选择按钮,如果没有指定,就会默认系统指定的按钮,当点击回车时,就会自动激活指定或默认的按钮,从而使实现对应的QMessageBox的功能。最简单的方法来弹出一个对话框,在Qt中调用静态功能之一,比如:QMessageBox::information()QMessageBox::question()QMessageBox::critical()QMessageBox::warning()等。其实多有一个共同点,函数里面定义的语法是一样的。
QMessageBox::information(QWidget *parent,const QString &title,const QString &text,StandarButtons buttons=OK,StandarButton defaultButton =NoButton)
 
就拿消息框信息函数对话框来说一下,第一个是QWidget *parent指的是父窗口部件;第二是字符串title的是对话框标题;第三是字符串文本,指定是对话框显示的内容,第四是标准按钮,默认标准按钮为OK按钮,第五个标准按钮是,默认选中。
QMessageBox::question(NULL, "question", "Question", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
提问的消息框,是正常操作的一部分问题。
Qt对话框--QMessageBox_职场
QMessageBox::information(NULL, "information", "Information",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
有关消息的消息框,正常操作的一部分
Qt对话框--QMessageBox_QMessageBox_02
QMessageBox::warning(NULL, "warning", "Warning", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
警告的消息框,告诉用户不寻常的错误
Qt对话框--QMessageBox_Qt_03
QMessageBox::critical(NULL, "critical", "Critical",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
 
严重错误消息框,告诉用户关于严重的错误
Qt对话框--QMessageBox_Qt_04
QMessageBox::warning(NULL,QObject::tr("My Application"),QObject::tr("The document has been modified.\n""Do you want to save your changes?"),QMessageBox::Save | QMessageBox::Discard| QMessageBox::Cancel,QMessageBox::Save);
 
QMessageBox::SaveQMessageBox::DiscardQMessageBox::Cancel这些枚举描述的标准按钮标志。每个按钮有一个定义。QMessageBox::Save是默认选择的按钮,点击Enter键默认是选择保存。
Qt对话框--QMessageBox_休闲_05
QMessageBox:: about ( QWidget * parent, const QString & title, const QString & text )
 
About消息框参数就少些,只有父窗口组件的定义,对话框标题定义,对话框显示内容的定义
QMessageBox::aboutQt ( QWidget * parent, const QString & title = QString() )
 
aboutQt只有两个参数,一个是父窗口组件,一个是对话框标题定义,文本内容引用Qt本身的一项版本内容的一些说明。接下来把这两个消息框运用到一个小程序中。
#include <QApplication>
#include <QMessageBox>
int main(int argc,char *argv[])
{
      QApplication app(argc,argv);
      QMessageBox msgBox;
      msgBox.setStandardButtons(QMessageBox::Yes| QMessageBox::No);
         switch (msgBox.exec()) {
         case QMessageBox::Yes:
             QMessageBox::about(NULL,QObject::tr("About Application"),
             QObject::tr("<font color = block><h2>QMessageBox</h2></font>"
             "<font color = red><h1>About<h1></font>"));
             break;
         case QMessageBox::No:
             QMessageBox::aboutQt(NULL,"AboutQt");
             break;
         default:
             break;
}
      return app.exec();
}
setStandardButton()设置标准按钮函数,设置枚举按钮消息框YesNo,QObject::tr()调用一个对象tr()函数来将函数里的html翻译成其他语言的标记。当点击枚举Yes时,显示QMessageBox::aboutQt()消息框,当点击No是显示QMessageBox::about()消息框,默认是No,也就是直接回车,就会选择QMessageBox::about()消息框。关闭消息框默认退出。Switch()结合case使用,做循环判断使用,break是跳出switch()循环用。
Qt对话框--QMessageBox_职场_06
运行程序后,显示一个只含有YesNo按钮的对话框
Qt对话框--QMessageBox_QMessageBox_07
回车或选中No弹出下面Qt介绍消息框Qt对话框--QMessageBox_职场_08
选择Yes弹出下面对应的消息框
Qt对话框--QMessageBox_职场_09
接下来拿个列在来练习一下,自定义图标,如果你的图片是JPEGJPGJPE等格式的,可以用Adobe PhotoshopCS3图片处理软件将图片转为PNG的格式图片,然后将图片共享到工程项目目录下,接着定义一个message对象,函数中声明父窗口部件引用QMessageBox::NoIcon没有图像,然后通过setIconPixmap()函数添加图片,然后将图片显示出来。
#include <QApplication>
#include <QMessageBox>                                                                               
int main(int argc,char *argv[])
{
     QApplication app(argc,argv);
     QMessageBox *message = new QMessageBox(QMessageBox::NoIcon,QObject::tr("personal Information"),QObject::tr("My Name is Chen Boqiang.\n""I was born in 1988\n""studing at liuzhou Vocational & Technical College.""\n\n""
                                               2010-5-26"));
      message->setIconPixmap(QPixmap("picture.png"));
      message->show();
      return app.exec();
}
 
程序的执行效果如下:
Qt对话框--QMessageBox_休闲_10
 
嘿嘿。。介绍一下自己。。。