Qt——消息对话框的设计

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.

时间: 2024-10-19 14:08:14

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

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

QMessageBox类: 含有Question消息框.Information消息框.Warning消息框和Critical消息框等 通常有两种方式可以来创建标准消息对话框: 一种是采用“基于属性”的API,一种是使用QMessageBox的静态方法. 后者书写容易,但缺少灵活性,针对用户给出的提示的信息不够丰富,并且不能自定义消息对话框里面的按钮提示信息.因此推荐第一种写法. [cpp] view plaincopy <span style="font-size:18px;"&

QT之消息对话框

我们会经常见到一些标准对话框,Qt 也为开发者提供了一些可复用的对话框类型. Qt 提供的可复用对话框全部继 QDialog 类,关系如下图所示:Qt 中的标准对话框遵循相同的使用方式,大概流程如下:那么我们的消息对话框是应用程序中最常见的界面元素,主要用于:1.为用户提示重要信息:2.强制用户进行操作选择.如我们平时所见的画图时的对话框,如下:那么我们消息对话框的使用方式是怎样的呢?如下所示:我们在实验中设置四个按钮,头文件如图所示:我们构建运行会得到如下图所示的效果图:QMessageBox

C# MessageBox 消息对话框

在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消息对话框位于System.Windows.Forms命名空间中,一般情况,一个消息对话框包含信息提示文字内容.消息对话框的标题文字.用户响应的按钮及信息图标等内容.C#中允许开发人员根据自己的需要设置相应的内容,创建符合自己要求的信息对话框. MessageBox消息对话框只提供了一个方法Show(),用来把消息对话框显示出来.此方法提供了不同的

第48课 替换对话框的设计与实现

1. 替换对话框需求分析 (1)可复用的软件部件 (2)查找文本框中的指定字符串 (3)替换单个指定字符串 (4)替换所有指定字符串 (5)附加需求:点击"关闭"按钮后隐藏 2. 替换对话框的设计与实现 (1)继承类图 (2)界面布局 3. 替换算法流程图 4. MainWindow与ReplaceDialog之间的关系 [编程实现]替换功能的实现 //main.cpp与上例相同 #include "MainWindow.h" #include <QAppli

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

一.基本对话框 1,核心库: 界面程序 QApplication 非程序界面QCoreAppliction 2,消息循环必须执行QApplication.exec(); 3,消息绑定机制: 信号-槽 信号可以对应信号,也可以对应槽. 一个信号可以对应多个信号和多个槽. 4,QT基本对话框: QErrorMessage, QInputDialog, QMessageBox, QPrintDialog, QProgressDialog, QFileDialog, QAbstractPrintDial

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

1.项目文件组成在QtCreator中新建一个WidgetApplocation项目,选中窗口基类中选中QWidget作为窗口基类,并选中"GnerateForm"复选框.创建后项目文件目录树如图: 项目组织文件pro:存储项目设置的文件主程序入口文件main.cpp,实现main函数的程序文件窗体界面文件widget.ui:一个XML格式存储的窗体上的文件以及其布局的文件widget.h是所设计的窗口类的头文件,widget.cpp是widget.h里定义类的实现文件.在C++里面,

如何修改Qt标准对话框的文字(例如,英文改成中文)

此篇文章参考qtcn论坛整理而成,因为文字和图片是本人亲自组织,所以仍算原创. http://www.qtcn.org/bbs/read-htm-tid-30650.html http://blog.csdn.net/yangxiao_0203/article/details/7488967 如图所示,QT自带的内建标准对话框QFontDialog.QColorDialog.QMessageBox.默认的文字全是英文的.QLineEdit和QTextEdit的右键菜单,默认的文字也全是英文的.请

Qt标准对话框之QColorDialog

Qt中提供了一些标准的对话框,用于实现一些常用的预定义功能,比如本节中将要介绍的颜色对话框——QColorDialog. 在不同的系统平台下,颜色对话框的显示效果可能会有所不同,主要因系统主题风格而异,但是功能是相同的,显示效果如下: 查看帮助文档的话,我们可以看到这个类提供的方法还是很多的,但是我们一般情况下用到的也就一个静态的成员方法:getColor(),该函数的原型如下: 1 QColor QColorDialog::getColor(const QColor & initial = Q

QT常用对话框的使用以及实现

考虑的QT的对话框的内容颇多,很难记,而且使用起来往往相同的操作,所以将自己敲的各个常用对话框的使用方法上传.以下包含了颜色对话框.打开单个(多个)文件对话框,字体对话框.输入对话框.提示信息对话框.进度对话框.QErrorMessage对话框,以及向导对话框. 废话少说,直接上代码: //颜色对话框 QColor color = QColorDialog::getcolor(Qt::red,this,tr("颜色对话框")); //获取选择的颜色再去设置即可 //文件对话框 QStr