1.消息对话框是什么

消息对话框(MessageBox)提供了一个模态对话框,用来通知用户某些信息,或者用来询问用户一个问题并获得一个答复。

先看下面2张图——

第一张图是网易云音乐的界面截图,在删除歌单时,防止用户误操作,弹出了一个提示,提醒用户确认删除歌单;

第二张图是Photoshop中,用户输入的颜色值不合法之后弹出的提示框,告知用户输入的颜色值要求在000000和ffffff直接。

由此大概可以知道消息对话框有哪些作用了,它可以作为删除保护框,或提示用户某些信息等等。

在Qt中有一个QMessageBox类,功能很全面,但缺点是用户很难甚至无法在它的基础上设置自己想要的界面样式。

所以有必要自己设计一个消息对话框了。

2.设计思路

先看一下最后的界面需要做成什么样子:

一个删除保护的对话框,它包括下面几个部分:标题、关闭按钮、内容文字、确定和删除按钮。

按照使用qt做界面的一般方法,就是建立信号槽,然后点击按钮时发出信号作出响应,但是这样做有一个很大的缺点:写代码时必须要把确定或取消后的操作写到相应的槽函数里。也就是在一个函数中打开对话框,在另一个函数里进行操作,很不方便。

在Qt中QMessageBox有如下用法:

int ret = QMessageBox::warning(this, tr("My Application"),
tr("The document has been modified.\n"
"Do you want to save your changes?"),
QMessageBox::Save | QMessageBox::Discard
| QMessageBox::Cancel,
QMessageBox::Save); switch (ret) {
case QMessageBox::Save:
// Save was clicked
break;
case QMessageBox::Discard:
// Don't Save was clicked
break;
case QMessageBox::Cancel:
// Cancel was clicked
break;
default:
// should never be reached
break;
}

调用静态函数打开对话框。对话框是模态的,用户点击确定或取消等按钮之后界面关闭,并获得一个返回值ret,根据返回值进行后续的操作。

3.具体实现

定义一个 静态函数 ,在静态函数中创建并显示消息对话框。

然后用 QEventLoop 使程序停止执行后面的代码。

用户点击确定或取消按钮之后退出eventloop,返回一个值并关闭对话框。

使用方法如下:

SimpleMsgBox::ButtonRole role = SimpleMsgBox::warning(this, "删除", "确定删除?");
if (role = SimpleMsgBox::Yes)
{
//...
}
else
{
//...
}

在此基础上,可以继续扩展,使它的功能更丰富。

the end.

Qt——消息对话框的设计的更多相关文章

  1. QT学习 之 对话框 (四) 字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

    QMessageBox类: 含有Question消息框.Information消息框.Warning消息框和Critical消息框等 通常有两种方式可以来创建标准消息对话框: 一种是采用“基于属性”的 ...

  2. QT设计UI:QT模式对话框打开文件

    使用QT模式对话框,并使显示框 为背景色: 方法使用了QCheckBox *native;   #include <QCheckBox> 初始化函数代码: //设置默认打开图像位置 nat ...

  3. Qt消息机制和事件

    Qt消息机制和事件 1 事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应 ...

  4. Qt之对话框QDialog

    这一节主要讲述对话框类,先讲述两种不同类型的对话框,再介绍Qt提供的几个标准对话框.对应本节的内容,可以在帮助索引中查看 QDialog 和 Dialog Windows 关键字. 一.模态和非模态对 ...

  5. 12个QT基本对话框,以及淡入原理(用定时器把窗口逐渐变成透明)

    一.基本对话框 1,核心库: 界面程序 QApplication 非程序界面QCoreAppliction 2,消息循环必须执行QApplication.exec(); 3,消息绑定机制: 信号-槽  ...

  6. Java消息系统简单设计与实现

    前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...

  7. C# MessageBox 消息对话框

    在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消息对话框位于System.Windows.For ...

  8. C#中的MessageBox消息对话框

    关键字:C# MessageBox 消息对话框 在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消 ...

  9. Qt之UI文件设计和运行机制

    1.项目文件组成在QtCreator中新建一个WidgetApplocation项目,选中窗口基类中选中QWidget作为窗口基类,并选中"GnerateForm"复选框.创建后项 ...

随机推荐

  1. 使用jenkins配置.net mvc网站进行持续集成一

    最近好久没有更新文章了,因为好久没有写代码了,以至于我不知道同大家分享些什么,刚好,今天突然叫我学习下jenkins每日构建,我就把今天的学习笔记记录下来,这其中很多东西都是公司同事之前调研总结的,我 ...

  2. CSS学习

    标签选择器,标签名{},作用于所有此标签. 类选择器, .class{},在标签内定义class="",属图形结构. ID选择器,#ID{}, 在标签内定义id="&qu ...

  3. less

    //:此注释不会被编译 /**/:会被编译 变量:以@开头,exp:@test_width:100px; 混合:  匹配: 运算:  嵌套: arguments:将所有的变量带进去  

  4. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  5. JS判断用户手机是IOS还是Android

    $(function () { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf(' ...

  6. 转一篇简洁的UIView动画编程方法

    iOS  中的 UIView 动画编程其实还是很简单的,像 CSS3 一样,在给定的时间内完成状态连续性的变化呈现.比如背景色,Frame 大小,位移.翻转,特明度等. 以前我使用的编程方式都是用下面 ...

  7. iOS开发之功能模块--高仿Boss直聘的常用语的开发

    首先上Boss直聘的功能界面截图,至于交互请读者现在Boss直聘去交互体验:     本人的公司项目要高仿Boss直聘的IM常用语的交互功能,居然花费了我前后17个小时完成,这回自己测试了很多遍,代码 ...

  8. 文件的上传(如何兼容火狐与IE)与国际化的原理

    1.文件的上传     [1] 简介         > 将本地的文件上传到服务器中         > 用户需要通过一个表单将文件上传到服务器中       [2] 表单的设置     ...

  9. git 远程仓库-github

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...

  10. Linux(RHEL6.0)下安装GCC

    查看系统版本 [root@CP-RHEL proc]# cat /etc/issue Red Hat Enterprise Linux Server release 6.0 (Santiago) Ke ...