消息对话框的两种通途:

  • ①用于简单的信息提示,并无其他所用,不利用对话框的返回值
  • ②用于确认选择对话框,对对话框的返回值进行利用

函数原型

  • 由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被选择!"));elseui->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();}
}
  • 演示效果:点击充值按钮,产生一个对话框

Qt:31---QMessageBox消息对话框相关推荐

  1. QT每日一练day16:QMessageBox消息对话框

    一.运行结果(GIF动图): 二.附代码 day16.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG + ...

  2. Qt学习:QMessageBox(消息对话框)

    一.Qt学习 1.QMessageBox(消息对话框) Ⅰ.错误对话框 QMessageBox::critical(this,"critical","错误"); ...

  3. Qt学习之路之QMessageBox消息框

    下面是 QMessageBox 的 实例: 开发环境: VS 2013, Qt版本: 5.4.0 下面附上代码: #include <QtWidgets/QApplication> #in ...

  4. QT学习:基本对话框

    在QT的基本对话框中包括标准文件对话框.标准颜色对话框.标准字体对话框.标准输入对话框以及标准消息对话框,各种标准基本对话框通过调用各自不同的静态函数来完成其功能. 下图为标准基本对话框所需的静态函数 ...

  5. Qt学习笔记-各种对话框基本使用

    运行图如下: 文件结构如下: 代码如下: mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow ...

  6. 【Qt】QMainWindow |QDialog对话框

    文章目录 1.QMainWindow 1.1 菜单栏 1.2 工具栏 1.3 状态栏 1.4 停靠部件 1.5 核心部件(中心部件) 1.6 使用UI文件创建窗口 1.6.1 UI设计窗口介绍 1.6 ...

  7. PyQt5中的QMessageBox消息弹窗使用示例

    前言 PyQt是Python语言环境的GUI编程解决方案之一,另外还有PyGTK.wxPython等也较为常用.PyQt作为Qt语言的Python扩展,可以用来方便快速的开发界面应用. PyQt5中的 ...

  8. QT<五> 对话框

    一.对话框 1.基本概念 对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互. Qt 中使用QDialog类实现对话框.就像主窗口一样,我们通常会设计一个类继承QDial ...

  9. QT中的模态对话框及非模态对话框

    模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其 ...

最新文章

  1. RosBE生成ReactOS的VS2015工程失败2
  2. google设置在新标签页打开的方法
  3. sharepoint部件webparth关闭找回的方法
  4. android 获取元素的下标_Appium中定位方式by_android_uiautomator
  5. OpenCV中的cv::String和CString互相转换
  6. 飞书推出“线上办公室” 通过实时语音频道还原办公场景
  7. 前端加密的常见场景和方法
  8. LINQ系列:Linq to Object集合操作符
  9. 字符串匹配(KMP)算法及Java实现
  10. 百度硬盘搜索 2.3 试用手记
  11. 作为一个程序员,你居然不知道内存(DRAM)的工作原理,这样能跟上时代的进步吗?
  12. Mac下Jmeter基本使用
  13. lua入门之二table
  14. PTA实验4-1-3 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。
  15. lisp语言画阿基米德线_120种UG表达式曲线画法(阿基米德螺旋线、数学方程式)...
  16. windows下查看硬盘序列号、设备序列号、操作系统版本和安装时间、系统启用时间等命令
  17. 华为云计算产品白皮书与案例合集
  18. 日期调用API,查询是否是节假日
  19. source insight无法识别函数定义
  20. 最新(U盘木马)Auto病毒专杀

热门文章

  1. Altium Designer 20 凡亿教育视频学习-01
  2. Distributed systems theory for the distributed systems engineer 翻译 中英对照
  3. 5脚继电器原理图和接法
  4. 安装系统(win7篇)新手专用
  5. 【Windows Server 2019】邮件服务器配置与管理——理论+实验拓扑说明
  6. 银联银行卡8583报文
  7. 金山爱词霸系列软件ISO纯净合集
  8. 用Python绘制表白代码
  9. 进阶篇——树莓派OLED模块的使用 大量例程详解
  10. PowerDesigner安装教程(含下载+汉化+去试用)