当前位置:天才代写 > tutorial > C语言/C++ 教程 > Qt进修之路(17):Qt尺度对话框之QMessageBox

Qt进修之路(17):Qt尺度对话框之QMessageBox

2017-11-05 08:00 星期日 所属: C语言/C++ 教程 浏览:562

副标题#e#

此刻照旧继承来说说Qt的尺度对话框吧!

这次来说一下QMessageBox以及雷同的几种对话框。其实,我们已经用过QMessageBox了,就在之前的几个措施中。不外,其时是粗略的说了一下,此刻专门来说说这几种对话框。

先来看一下最熟悉的QMessageBox::information。我们在以前的代码中这样利用过:

QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

下面是一个简朴的例子:

Qt学习之路(17):Qt标准对话框之QMessageBox

此刻我们从API中看看它的函数签名:

static StandardButton QMessageBox::information ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );

首先,它是static的,所以我们可以或许利用类名直接会见到(怎么看都像空话…);然后看它那一堆参数,第一个参数parent,说明它的父组件;第二个参数title,也就是对话框的标题;第三个参数text,是对话框显示的内容;第四个参数buttons,声明对话框安排的按钮,默认是只安排一个OK按钮,这个参数可以利用或运算,譬喻我们但愿有一个Yes和一个No的按钮,可以利用QMessageBox::Yes | QMessageBox::No,所有的按钮范例可以在QMessageBox声明的StandarButton列举中找到;第五个参数defaultButton就是默认选中的按钮,默认值是NoButton,也就是哪个按钮都不选中。这么多参数,豆子也是记不住的啊!所以,我们在用QtCreator写的时候,可以在输入 QMessageBox::information之后输入(,稍等一下,QtCreator就会帮我们把函数签名显示在右上方了,照旧挺利便的一个成果!

Qt提供了五个雷同的接口,用于显示雷同的窗口。详细代码这里就不做先容,只是来看一下样子吧!

QMessageBox::critical(NULL, "critical", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

Qt学习之路(17):Qt标准对话框之QMessageBox

QMessageBox::warning(NULL, "warning", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

Qt学习之路(17):Qt标准对话框之QMessageBox

QMessageBox::question(NULL, "question", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

Qt学习之路(17):Qt标准对话框之QMessageBox


#p#副标题#e#

QMessageBox::about(NULL, "About", "About this application");

Qt学习之路(17):Qt标准对话框之QMessageBox

请留意,最后一个about()函数是没有后两个关于button配置的按钮的!

QMessageBox对话框的文本信息时可以支持HTML标签的。譬喻:

QMessageBox::about(NULL, "About", "About this <font color='red'>application</font>");

运行结果如下:

Qt学习之路(17):Qt标准对话框之QMessageBox

假如我们想自界说图片的话,也是很简朴的。这时候就不能利用这几个static的函数了,而是要我们本身界说一个QMessagebox来利用:

QMessageBox message(QMessageBox::NoIcon, "Title", "Content with icon.");
message.setIconPixmap(QPixmap("icon.png"));
message.show();

需要留意的是,同其他的措施雷同,我们在措施中界说的相对路径都是要相对付运行时的.exe文件的地点的。好比我们写"icon.png",意思是是在.exe的当前目次下寻找一个"icon.png"的文件。这个措施的运行结果如下:

Qt学习之路(17):Qt标准对话框之QMessageBox

尚有一点要留意,我们利用的是png名目标图片。因为Qt内置的处理惩罚图片名目是png,所以这不会引起很大的贫苦,假如你要利用jpeg名目标图片的话,Qt是以插件的形式支持的。在开拓时没有什么问题,不外假如要陈设的话,需要留意这一点。

最后再来说一下怎么处理惩罚对话框的交互。我们利用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");
}

假如要利用结构函数的方法,那么我们就要本身运行判定一下啦:

#p#分页标题#e#

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");
}

其实原理上也是差不多的。

出处:http://devbean.blog.51cto.com/448512/217694

 

    关键字:

天才代写-代写联系方式