Qt对话框--QMessageBox

说到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();
}
 
程序的执行效果如下:
 
嘿嘿。。介绍一下自己。。。









本文转自 chen138 51CTO博客,原文链接:http://blog.51cto.com/chenboqiang/321900,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值