说到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);
提问的消息框,是正常操作的一部分问题。
QMessageBox::information(NULL, "information", "Information",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
有关消息的消息框,正常操作的一部分
QMessageBox::warning(NULL, "warning", "Warning", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
警告的消息框,告诉用户不寻常的错误
QMessageBox::critical(NULL, "critical", "Critical",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
严重错误消息框,告诉用户关于严重的错误
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::Save
、
QMessageBox::Discard
、
QMessageBox::Cancel
这些枚举描述的标准按钮标志。每个按钮有一个定义。
QMessageBox::Save
是默认选择的按钮,点击
Enter
键默认是选择保存。
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()
设置标准按钮函数,设置枚举按钮消息框
Yes
和
No,QObject::tr()
调用一个对象
tr()
函数来将函数里的
html
翻译成其他语言的标记。当点击枚举
Yes
时,显示
QMessageBox::aboutQt()
消息框
,
当点击
No
是显示
QMessageBox::about()
消息框,默认是
No
,也就是直接回车,就会选择
QMessageBox::about()
消息框。关闭消息框默认退出。
Switch()
结合
case
使用,做循环判断使用,
break
是跳出
switch
()循环用。
运行程序后,显示一个只含有
Yes
和
No
按钮的对话框
回车或选中No弹出下面Qt介绍消息框
选择Yes弹出下面对应的消息框
接下来拿个列在来练习一下,自定义图标,如果你的图片是
JPEG
、
JPG
、
JPE
等格式的,可以用
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();
}
程序的执行效果如下:
嘿嘿。。介绍一下自己。。。
本文出自 “嵌入式技术” 博客,请务必保留此出处http://chenboqiang.blog.51cto.com/1068057/321900