Qt——消息对话框的设计
2016-05-29 18:53
288 查看
1.消息对话框是什么
消息对话框(MessageBox)提供了一个模态对话框,用来通知用户某些信息,或者用来询问用户一个问题并获得一个答复。先看下面2张图——
![](https://images2015.cnblogs.com/blog/628412/201605/628412-20160529182210053-1875073458.png)
![](https://images2015.cnblogs.com/blog/628412/201605/628412-20160529182229303-1741337918.png)
第一张图是网易云音乐的界面截图,在删除歌单时,防止用户误操作,弹出了一个提示,提醒用户确认删除歌单;
第二张图是Photoshop中,用户输入的颜色值不合法之后弹出的提示框,告知用户输入的颜色值要求在000000和ffffff直接。
由此大概可以知道消息对话框有哪些作用了,它可以作为删除保护框,或提示用户某些信息等等。
在Qt中有一个QMessageBox类,功能很全面,但缺点是用户很难甚至无法在它的基础上设置自己想要的界面样式。
所以有必要自己设计一个消息对话框了。
2.设计思路
先看一下最后的界面需要做成什么样子:![](https://images2015.cnblogs.com/blog/628412/201605/628412-20160529183433647-1117550895.png)
一个删除保护的对话框,它包括下面几个部分:标题、关闭按钮、内容文字、确定和删除按钮。
按照使用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开发】窗口切换
- qt5.3.2下载地址
- 第5课时《osg矩阵变换(下)》
- QT cannot find -lGL
- 第4课时《osg矩阵变换(上)》
- QT5新手教程(1)QT5+VS2013
- QT5发布、打包exe程序
- 第1课时《Qt osgEarth 编程入门》
- Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)
- 解决 Qt5 使用 OpenGL 函数未定义的错误
- 用Qt实现一个桌面弹幕程序(十)-- -- 网页服务端的实现①
- Qt 将图片转为字符串的方法。
- ubuntu安装qt 5.6 及 example “Musicplayer” 不能够编译原因
- Qt没有被正确安装
- 将QT5.6集成至VS2015
- [置顶] Qt for IOS环境的搭建以及ffmpeg库的编译与移植
- QTableView类中实时刷新和固定选中的矛盾(即刷新后不清除选中标记)的解决方法
- QT中数据类型转换总结
- osg与Qt结合编程
- Qt学习之路(17): Qt标准对话框之QMessageBox