上期我们补充学习了QFileDialog以及打印文件相关的对话框。
这次我们再学习下消息对话框。
正文
1
今天完成后的效果就是这样的:
2
下面我们还是和以往一样,按照代码来进行讲解。
消息对话框主要涉及QMessageBox类。QMessageBox类提供了一个模态对话框,用于通知用户或询问用户问题并接收答案。
消息框显示主要文本以提醒用户情况,信息性文本以进一步解释警报或询问用户一个问题,以及可选的详细文本,以便在用户请求时提供更多数据。 消息框还可以显示用于接受用户响应的图标和标准按钮。
提供了两个使用QMessageBox的API,基于属性的API和静态函数。 调用静态函数是更简单的方法,但是比使用基于属性的API更不灵活,结果信息较少。 两种方法我们在程序中都使用了。
我们通过上面的动画可以看到一般而言,消息对话框分为五种,分别是提示信息、询问、警告、错误、关于,其中关于又分为两种,一种是一般性关于、另一种是关于Qt的介绍,可以明显看见不同。对于前四种,其分别对应的图标如下:
3
我们从几个槽函数来开始介绍五种消息对话框,至于界面定义、信号与槽函数调用属于以前的知识点,这里不再重复。
这里我们描述了一个信息提示的对话框。它的函数调用格式如下:
打开包含指定父窗口小部件并给定了标题和文本的信息消息对话框。这句话分别对应了第一、二、三个参数。
第四个参数则是我们要在消息对话框上想要显示的按钮。
第五个参数defaultButton指定按Enter键时使用的按钮。如果defaultButton是QMessageBox.NoButton,QMessageBox会自动选择合适的默认值。
当然还有更多的按钮可以供我们选择,如下图:
这个函数中我们显示的按钮分别是Ok、Close,默认按钮是Close。
注意看下图中按钮的焦点在哪。
标签上的信息会根据我们选择的按钮信息相应的变化,判断是选择了OK还是Close。
4
这个函数与上一个函数的内容差不多,唯一不同的地方是,产生的消息对话框带了一个“?”,这里不做详解了,如下图:
上面两种产生消息对话框的方式,就是调用静态函数的方式了,下面我们则重点讲解一下基于属性的调用。
这个函数我们分别使用了基于属性和静态函数的方式产生消息对话框,当然实际使用时需要注释一种。区别还是有的,如下图:
不知道大家注意到没有,这次的按钮里面显示的是中文哦!!!而之前一直都是英文啊(考验大家英语的水平到了)。这就是基于属性的产生消息对话框的好处,虽然繁琐但是贵在牛逼啊!
因为要在对话框中增加一个复选框,所以我新建了一个复选框对象,复选框的内容就是“所有文档都按此操作”。
这四个语句分别有如下表示:
设置消息对话框的标题:警告。
设置消息对话框的图标:QMessageBox.Warning,也就是警告图标,当然也可以选择QMessageBox.Information、QMessageBox.Question、QMessageBox.Critical。
设置消息对话框的要显示的消息框文本,如果文本格式设置(QMessageBox.textFormat),文本将被解释为纯文本或富文本。 默认设置为Qt.AutoText,即消息框将尝试自动检测文本的格式。
设置消息对话框更完整描述的信息性文本,可以使用Infromative文本来扩展text()以向用户提供更多信息。 在Mac上,此文本以text()下方的小系统字体显示。 在其他平台上,它只是附加到现有文本。
这里我实际上是新建了三个按钮,当然是中文的,每个对应着一种事件的角色,是接受、拒绝还是放弃。最后我们设置了默认的按钮是保存。你可以看见焦点是在这个按钮上。如下图:
我们需要在消息对话框上设置之前建立的那个复选框。当我们选择这个复选框的时候产生了stateChanged信号,对应的将连接check()这个槽函数。
这行这个语句让消息对话框能够显示出来,并将我们选中的按钮返回给reply这个变量。
当我们选择不同的按钮时候,我们则在标签上有不同的显示。
例如:
AcceptRole表示点击按钮可以接受对话框;
RejectRole表示单击该按钮将导致对话框被拒绝;
DestructiveRole表示单击该按钮将导致破坏性更改(例如“丢弃更改”)并关闭对话框。
这里先把复选框用到的槽函数介绍一下:
这个比较好理解,self.sender()就是传递信号过来的对象,这里就是复选框;isChecked()返回的是一个布尔值,也就是判断是否被选中,选中了就显示打勾,否则就是不打勾。
5
这个函数大部分的使用和上面的差不多,主要介绍几点:
表明消息对话框中使用哪些标准按钮。
该属性保存要在详细信息区域中显示的文本。文本将被解释为纯文本。默认情况下,此属性包含一个空字符串。如下图:
6
这里我们同样用了两种方式建立关于消息对话框,重点说明第二种,即基于属性的。我们同样建立了QMessageBox对象,一开始的时候就将标题还有要显示的内容带入了,同时还表明这是一个没有图标的消息对话框。
然后我们这种对图标进行了设计,使用setIconPixmap()函数,注意参数必须是QPixmap类型的。如下图:
Tips:使用QPixmap前需要导入相应的类,这个类在介绍图形的时候要重点介绍。
这里我们将调用关于Qt的对话框,比较简单,没什么好解释的,如下图:
7
最后我们来看下如何通过Eric6以及Qt设计师来完成本次的示例程序,由于图文过于繁琐,采用录屏的方式。考虑到时间因素,只通过设置两个按钮来演示,其余的请参考,节约大家时间。
如果感觉在微信上看不清楚,可以点击阅读原文直接看,记得选择超清啊!
8
总结:
本次我们学习了如何创建并使用消息对话框。
ok,今天就到这里,我们下期再谈谈其他的对话框,本身对话框内容就比较多,会多分几期讲解。
如果你想要本次教程中的相关源码(有美图哦),请关注微信公众号:学点编程吧,发送pyqt511,会自动得到相应的百度网盘下载链接。
苹果用户也能赞赏了,点击下图扫描二维码吧!
更多资讯请关注:学点编程吧——你私人的计算机学习顾问!
欢迎各位童鞋留言!
领取专属 10元无门槛券
私享最新 技术干货