Qt:31---QMessageBox消息对话框
消息对话框的两种通途:①用于简单的信息提示,并无其他所用,不利用对话框的返回值②用于确认选择对话框,对对话框的返回值进行利用由warning()、information()、critical()、about()这几个函数组成,这几个函数的参数与使用方法都是相同的,只是图标显示不一样而已,下面以warning()函数为例函数原型一:int QMessageBox::warnin...
·
消息对话框的两种通途:
- ①用于简单的信息提示,并无其他所用,不利用对话框的返回值
- ②用于确认选择对话框,对对话框的返回值进行利用
函数原型
- 由warning()、information()、critical()、about()这几个函数组成,这几个函数的参数与使用方法都是相同的,只是图标显示不一样而已,下面以warning()函数为例
函数原型一:
int QMessageBox::warning( QWidget *parent, const QString &title, const QString &text, int button0, int button1, int button2 = 0 )
- parent参数:父窗口
- title参数:消息对话框标题
- text参数:消息对话框的内容
- button0、button1、button2参数:按钮的退出类型,可选择以下的类型(从左至右都可以缺省,如果都缺省,则默认为QMessageBox::Ok)
- 返回值:为你选择的退出按钮类型的值(就是上图中的按钮常量值)
函数原型二:
int QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, const QString &button0Text, const QString &button1Text = QString(), const QString &button2Text = QString(), int defaultButtonNumber = 0, int escapeButtonNumber = -1)
- parent、title、text参数:与上面的相同
- button0Text、button1Text、button2Text参数:为退出的选择按钮,可以自定义按钮文本(不过都可以缺省,都缺省之后为QMessageBox::Ok)。如果都设置了button的序号为0、1、2
- defaultButtonNumber参数:为消息对话框显示之后,光标默认停留在前面那个button上面(可以选择为前面的button序号,如果缺省默认为0)
- 返回值:为你选择的退出按钮类型的值(就是button的序号)
一、简单的信息提示
- 概念:消息对话框QMessageBox用于显示提示、警告、错误等信息,或进行确认选择,并不关心对话框的返回值
演示案例
//Critical按钮 void Widget::on_btnMsgCritical_clicked() { QString dlgTitle=QStringLiteral("critical消息框"); QString strInfo=QStringLiteral("有不明程序访问网络"); QMessageBox::warning(this,dlgTitle,strInfo, QStringLiteral("确定"),QStringLiteral("取消"),QStringLiteral("退出"),2); } //Informatio按钮 void Widget::on_btnMsgInformation_clicked() { QString dlgTitle=QStringLiteral("information消息框"); QString strInfo=QStringLiteral("文件已经打开,字体大小已设置"); QMessageBox::warning(this,dlgTitle,strInfo, QMessageBox::Yes,QMessageBox::No,QMessageBox::Cancel); } //Warnin按钮 void Widget::on_btnMsgWarning_clicked() { QString dlgTitle=QStringLiteral("warning消息框"); QString strInfo=QStringLiteral("文件内容已经被修改"); QMessageBox::warning(this,dlgTitle,strInfo); } //About按钮 void Widget::on_btnMsgAbout_clicked() { QString dlgTitle=QStringLiteral("aboutg消息框"); QString strInfo=QStringLiteral("我开发的数据查看软件 V1.0\n保留所有版权"); QMessageBox::warning(this,dlgTitle,strInfo); }
二、用做确认选择对话框
- 根据对话框的返回值进行不同的操作
- 对话框的返回值类型可以用QMessageBox::StandardButton表示
- 注意:参数4可以用逻辑或的方式
演示案例
void Widget::on_btnMsgQuestion_clicked() { QString dlgTitle=QStringLiteral("Question消息框"); QString strInfo=QStringLiteral("文件已被修改,是否保存修改"); QMessageBox::StandardButton defaultBtn=QMessageBox::NoButton; QMessageBox::StandardButton result; result=QMessageBox::question(this,dlgTitle,strInfo, QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,defaultBtn); if(result==QMessageBox::Yes) ui->plainTextEdit->appendPlainText(QStringLiteral("Yes被选择!")); else if(result==QMessageBox::No) ui->plainTextEdit->appendPlainText(QStringLiteral("No被选择!")); else if(result==QMessageBox::Cancel) ui->plainTextEdit->appendPlainText(QStringLiteral("Cancel被选择!")); else ui->plainTextEdit->appendPlainText(QStringLiteral("无选择!")); }
三、自定义对话框点击按钮文本
演示案例
int result; QMessageBox *msgbox = new QMessageBox(); msgbox->setText("选择支付方式"); //设置文本 msgbox->setStandardButtons(QMessageBox::Yes|QMessageBox::No);//设置对话框有几个按钮 //设置按钮文本 msgbox->button(QMessageBox::Yes)->setText("支付宝"); msgbox->button(QMessageBox::No)->setText("微信"); result=msgbox->exec();//执行对话框,并获取返回值 //下面根据QMessageBox的返回值显示不同的图片 QLabel* label; if(result==QMessageBox::Yes){ QString filename(":/pictures/src/zhi.png"); QImage* img=new QImage; if((img->load(filename))) //加载图像 { label=new QLabel(); label->setPixmap(QPixmap::fromImage(*img)); label->setScaledContents(true); label->setMaximumSize(547,662); label->show(); } } else if(result==QMessageBox::No){ QString filename(":/pictures/src/wei.png"); QImage* img=new QImage; if((img->load(filename))) //加载图像 { label=new QLabel(); label->setPixmap(QPixmap::fromImage(*img)); label->setScaledContents(true); label->setMaximumSize(547,662); label->show(); } }
- 演示效果:点击充值按钮,产生一个对话框
更多推荐









所有评论(0)