直接上官方文档

//提示型
static StandardButton information(QWidget *parent, const QString &title,const QString &text, StandardButtons buttons = Ok,StandardButton defaultButton = NoButton);
//疑问型static StandardButton question(QWidget *parent, const QString &title,const QString &text, StandardButtons buttons = StandardButtons(Yes | No),StandardButton defaultButton = NoButton);
//错误型static StandardButton warning(QWidget *parent, const QString &title,const QString &text, StandardButtons buttons = Ok,StandardButton defaultButton = NoButton);
//批判型static StandardButton critical(QWidget *parent, const QString &title,const QString &text, StandardButtons buttons = Ok,StandardButton defaultButton = NoButton);
//关于型static void about(QWidget *parent, const QString &title, const QString &text);

详解 提示型information

 static StandardButton information(QWidget *parent, const QString &title,         const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton);QMessageBox::information(NULL, QStringLiteral("提示"), QStringLiteral("加载默认设定参数[%1]。").arg(i + 1),QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);

首先,它是static的,所以我们能够使用类名直接访问到(怎么看都像废话…);然后看它那一堆参数,参数一parent,说明它的父组件;参数二title,也就是对话框的标题;参数三text,是对话框显示的内容;参数四buttons,声明对话框放置的按钮,默认是只放置一个OK按钮(不写默认为一个ok),这个参数可以使用或运算,例如我们希望有一个Yes和一个No的按钮,可以使用QMessageBox::Yes | QMessageBox::No,所有的按钮类型可以在QMessageBox声明的StandarButton枚举中找到;参数五defaultButton就是默认选中的按钮,默认值是NoButton,也就是哪个按钮都不选中。这么多参数,豆子也是记不住的啊!所以,我们在用QtCreator写的时候,可以在输入QMessageBox::information之后输入(,稍等一下,QtCreator就会帮我们把函数签名显示在右上方了,还是挺方便的一个功能!

对话框的交互

我们使用QMessageBox类的时候有两种方式,一种是使用static函数,另一种是使用构造函数。

首先来说一下static函数的方式。注意,static函数都是要返回一个StandardButton,我们就可以通过判断这个返回值来对用户的操作做出相应。

QMessageBox::StandardButton rb = QMessageBox::question(NULL, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
if(rb == QMessageBox::Yes)
{ QMessageBox::aboutQt(NULL, "About Qt");
}

如果要使用构造函数的方式,那么我们就要自己运行判断一下啦:

QMessageBox message(QMessageBox::NoIcon, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, NULL);
if(message.exec() == QMessageBox::Yes) //典型模态模式
{ QMessageBox::aboutQt(NULL, "About Qt");
}

详解Demo

void CSceCreator::onNewScn()
{//提示保存数据if (m_scenarioMgr->isScnLoaded()){QString title = LSTR("新建方案");QString sinfo = LSTR("当前所有没有保存的数据都会丢失,您确定吗?");QMessageBox msgBox(QMessageBox::Warning, title, sinfo, NULL);//这里使用的是 构造函数方法QPushButton* btn_Yes = msgBox.addButton(LSTR("是"), QMessageBox::AcceptRole);QPushButton* btn_No  = msgBox.addButton(LSTR("否"), QMessageBox::RejectRole);msgBox.exec();if (msgBox.clickedButton() == btn_No)return;//重置想定m_scenarioMgr->resetScenario();//重置界面显示m_scnConfDock->resetScnTreeView();//重置GIS显示m_gisViewScene->clearGisProject();}//新建方案CDlgNewProj dlgNP(CForceForm::FORCE_ROLE_INSCN);if (QDialog::Accepted != dlgNP.exec())return;//设置想定信息m_scenarioMgr->m_curScnInfo.name  = dlgNP.m_strProjName;m_scenarioMgr->m_curScnInfo.path  = dlgNP.m_strProjPath;m_scenarioMgr->m_curScnInfo.desc  = dlgNP.m_strProjDesc;//按步骤创建if (1 == dlgNP.m_nCreateType){CDlgSceneSet  dlgSS;CDlgFormSet       dlgFS;CDlgEvalSet       dlgES;CDlgDeplSet       dlgDS;CDlgStepSet* dlgSet[4];int    curDlgInd = 0;bool enableFinish = false;dlgSet[0] = &dlgSS;dlgSet[1] = &dlgFS;dlgSet[2] = &dlgES;dlgSet[3] = &dlgDS;while (true){dlgSet[curDlgInd]->setEnableFinish(enableFinish);int ret = dlgSet[curDlgInd]->exec();//如果选择取消,直接退出if (QDialog::Rejected == ret)return;if (QDialog::Accepted == ret){//如果选择完成,退出循环if (dlgSet[curDlgInd]->m_bSetpFinish)break;if (dlgSet[curDlgInd]->m_bStepPrev){dlgSet[curDlgInd]->resetStepFlag();curDlgInd = (curDlgInd <= 0) ? 0 : (--curDlgInd);}if (dlgSet[curDlgInd]->m_bStepNext){dlgSet[curDlgInd]->resetStepFlag();curDlgInd = (curDlgInd >= 3) ? 3 : (++curDlgInd);}}if (curDlgInd >= 3)enableFinish = true;}//根据步骤设定对话框返回,在后台加载相应的场景、编成和评估方案int sid = dlgSS.getCurSceneId();m_sceneMgr->openScnScene(sid);int rfid, bfid;dlgFS.getCurFormId(rfid, bfid);m_forceMgr->loadFormPrj(CForceForm::FORCE_COLOR_RED, rfid);m_forceMgr->loadFormPrj(CForceForm::FORCE_COLOR_BLUE, bfid);}//通知想定视图更新想定树m_scnConfDock->updateScnTreeView();//变更想定后,设置运行态为空状态(即运行时需要重新下发想定文件)_changeButtonState(sysrun_state_none);//日志记录CScenarioLog::scenarioLog()->writeLog(CScenarioLog::log_Sys, LSTR("新建") + m_scenarioMgr->m_curScnInfo.path);
}

Qt之QMessageBox详解相关推荐

  1. QT QtableView操作详解

    本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删 ...

  2. Qt pro 文件详解

     Qt pro 文件详解 1. TEMPLATE  变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件.Qmake  工具定义了5种模板:   a. 应用 ...

  3. Qt 5.12--Item详解

    Qt 5.12--Item详解 1 作为容器 2 默认属性 3 透明度 4 堆叠顺序 5 定位子项目和坐标映射 参考 QML中的所有可视项目都继承自Item.虽然Item本身没有可视化的外观,但是它定 ...

  4. [QT] QMap使用详解

    [QT] QMap使用详解 引言 ​ QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快.QMap中的数据都是成对出现的,第一个称为key(键),第二 ...

  5. qstring如何初始化_学习QT之QString详解

    学习QT之QString详解 QString类保存16位Unicode值,提供了丰富的操作.查询和转换函数.该类还进行了使用隐式共享.高效的内存分配策略等多方面的优化. 一.字符串常用操作 字符串的操 ...

  6. QT Echarts 使用详解(一)ECharts下载\示例\动态缩放

    Echarts是百度的一款可视化界面开发的平台,里面的地图以及数据可视化内容十分丰富,适合用于一些大屏数据显示项目或者一些ui界面开发.每一个ECharts图表使用一个无边框的QWebView来展示, ...

  7. Qt QMessageBox详解

    文章目录 一.QMessageBox介绍 枚举 属性 函数 二.QMessageBox的用法 1.导入QMessage库 2.弹窗提示 3.提供选项的弹窗提示 4.作为提示,报警,报错提示窗口 一.Q ...

  8. rv1109/rv1126 编译并部署QT项目(详解)

    目录 前言 一.Windows 下QT环境搭建 二.在 Builroot 下编译QT应用 1.Buildroot下构建QT工程 2.移植源码 3.编译工程 三.使用交叉编译工具链编译QT 1.准备工作 ...

  9. QT QLineEdit使用详解

    本文详细的介绍了QLineEdit控件的各种操作,例如:编辑框的状态.边框.密码框.限制输入类型.对齐方式.验证器的使用.样式表的应用等操作. QLineEdit允许用户输入和编辑单行纯文本,提供了很 ...

最新文章

  1. 20Composite(组合)模式
  2. linux clock命令,Linux中clock命令起什么作用呢?
  3. ES-PHP向ES批量添加文档报No alive nodes found in your cluster
  4. c++和java哪个难_前端和Java开发哪个难?哪个学习容易一点?
  5. 图解HTTP学习记录(六)
  6. SpringMVC使用AOP
  7. 8086汇编与c++编译器就内存方面的感想
  8. Java实现栈(顺序栈,链栈)
  9. jgroups_JGroups:无需额外基础架构的领导人选举
  10. 【视觉项目】【day5】8.25号实验记录(修完BUG,28张测试图,13个样本,四张测试图误判,这比之前效果好很多了)
  11. 看printk引发的一点思考
  12. How to recover from root.sh on 11.2 Grid Infrastructure Failed
  13. `ifdef、`else、`endif 用法
  14. linux set 39 date 39,Linux date命令
  15. sigar获取单个进程信息
  16. 运算放大器---输入偏置电流(IB)
  17. Ps|无规律渐变效果
  18. CodeForces Canada Cup 2016 A、B水题 _(:з」∠)_
  19. 2022CPA财务与成本管理-管理会计专题【完结】
  20. java计算机毕业设计计算机课程在线培训学习管理系统MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. 【李宏毅2020 ML/DL】P82 Generative Adversarial Network | Improving Sequence Generation by GAN
  2. mathtype7.x与基本使用
  3. SystemVerilog中package(包)的基本使用
  4. 解决Exchange用户邮箱别名为乱码的问题
  5. java 重命名_Java如何重命名文件?
  6. Quart 2D (DrawText)
  7. Silverlight 2.5D RPG游戏技巧与特“.NET技术”效处理:(十一)AI系统
  8. info matlab,c – 在OpenCV中是否有类似MATLAB的’impixelinfo()’功能?
  9. 如何安装Exchange2010上安装更新汇总(Update Rollup)
  10. (StreamReader.ReadLine()==null)还是(-1 != StreamReader.Peek())?