Qt的窗口(三)
Qt的窗口(三)
- 1.模态对话框
- 2.MessageBox
- 2.QColorDialog
- 3.QFileDialog
- 4.QFontDialog
- 5.QInputDialog
🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Qt的学习】
📝📝本篇内容:模态对话框;MessageBox;QColorDialog;QFileDialog;QFontDialog;QInputDialog
⬆⬆⬆⬆上一篇:Qt的窗口(二)
💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-
1.模态对话框
在我们之前讲的对话框中,当弹出对话框时,我们也可以操作我们的父窗口,但是有的时候在一些特殊的场合中,必须要让用户作出决策。
model模态:弹出对话框的时候,此时用户无法操作父窗口,必须完成对话框内部要求的操作
非模态:弹出对话框的时候,用户可以操作父窗口
因此像我们前面写的几个代码都是非模态对话框,想要实现这种效果,只需要将我们在代码中运行对话框的show换成exec即可
2.MessageBox
之前讲了QDialog,接下来就可以讲讲它的一些扩展类,都是QDialog的子类,Qt已经给我们提供好了,Message是一个消息框,弹出信息让你做出选择
我们一点一点来解释代码
首先是创建方式,这个其实和QDialog是一样的,并且它同样也是继承QWidget的,因此也可以使用QWidget相关的属性和函数来设置标题等,setText是QMessageBox自带的,用来设置消息的
其次QMessageBox也可以设置图标和按钮,Qt也都给我们内置了
NoIcon:不显示任何图标
Information:信息图标(通常为蓝色 “i” 图标),用于展示一般性通知
Warning:警告图标(通常为黄色感叹号),用于提示潜在问题
Critical:严重错误图标(通常为红色叉号),用于报告严重故障
Question:疑问图标(通常为问号),用于引导用户确认操作
在我们的标准按钮中,我们是没有办法进行信号槽的链接的,因为按钮是QMessage自己生成的。QMessageBox使用场景更多是模态的,使用这种方法后设置后好按钮,并且使用exec,弹出模态消息框,当消息框处于弹出状态时,代码就会在exec这里阻塞,一直到消息框被关闭。当用户点击按钮后使对话框关闭,此时就能通过exec的返回值来知道我们用户点击的是哪个按钮,从而像信息槽一样执行一些对应逻辑了。
当然我们也可以使用自定义的按钮,如下,但是不常用,也不方便
其中的addButton的第二个参数,其实是设置我们的按钮所代表的属性,AcceptRole就代表接受,Ok
当只是简单的使用消息框的话,还有更简单的方式,调用QMessageBox给我们提供的静态函数
QMessageBox::StandardButton QMessageBox::information(
QWidget *parent, // 父窗口指针
const QString &title, // 消息框标题
const QString &text, // 消息框内容
QMessageBox::StandardButtons buttons = QMessageBox::Ok, // 显示的按钮(默认仅显示OK)
QMessageBox::StandardButton defaultButton = QMessageBox::NoButton // 默认聚焦的按钮
);
上面只展示了information一种消息类型,其他的类型就是我们前面所讲的QMessageBox给我们提供的图标他们所代表的枚举值
2.QColorDialog
接下来这个是颜色对话框,就是让用户选择用户,使用起来也比较简单,和我们前面的QMessageBox一样,调用一个静态函数就可以实现
Qt中的QColorDialog的功能已经内置了调色板,像我们看见的打印结果其实是用0-1这样的小数表示RGB的值了,1对应到的整数就是255,0对应到整数0。其中第一个“1”代表的是不透明度,1表示完全不透明,其余的三个数字就是RGB。
我们使用的是getColor这个函数,这个函数能够弹出一个模块颜色框(这章节讲的,只要是静态函数,都是模块属性的),用户选择颜色之后,点击确定,对话框就会关闭,而函数返回值就是用户选择的颜色值。所以说和之前QMessageBox::information是一样的道理,不必创建对话框对象,就可以直接使用。
程序的功能是基于用户选择的颜色修改窗口的背景色,可以通过QSS来设置,在代码中演示了两种编写QSS的方式,这边只需要了解,后面章节会详细说明。
3.QFileDialog
QFileDialog介绍两个函数,他们和前面讲的一样,是静态函数
QFileDialog::getSaveFileName 是 Qt 中用于弹出文件保存对话框的核心静态方法,隶属于QFileDialog类,作用是让用户可视化选择文件的保存路径 + 文件名,并返回用户确认的完整文件路径
QFileDialog::getOpenFileName 是 Qt 中弹出单文件打开对话框的核心静态方法,隶属于QFileDialog类,与getSaveFileName为姊妹方法,专门用于让用户可视化选择已存在的单个文件并返回其完整路径,是 Qt 开发中文件打开、导入功能的必备接口。
在这边的打开和保存功能都是需要额外去实现的,并不是说直接一按打开和保存就真的打开和保存了,这个后续讲Qt针对文件的时候会说。
4.QFontDialog
这个对话框是用来设置字体的,使用的函数也是静态的,直接来看代码
ok 参数是专门用于判断用户在字体选择对话框中,最终点击的是「确定」还是「取消」按钮的核心依据,也是该方法的必传输出参数,没有它就无法准确识别用户的操作意图。像前面讲的QColorDialog和QFileDialog的核心获取方法,取消时会返回「天然的无效值」,可直接通过返回值判断用户是「确定」还是「取消」,因此无需额外的ok参数;而QFontDialog::getFont()没有这个「无效值标识」,才需要ok参数补充判断。
5.QInputDialog
QInputDialog是输入对话框,它可以输入或者设置整型,浮点型,字符串,它分别对应三个函数,也是静态的
在代码中使用到的QStringList可以把他当成一个字符数组,但是其实它更像C++中的list和vector的相结合,也就是双端队列deque
在对话框中,我们即可以直接输入也可以直接通过上下按钮进行调节,像字符串的话可以直接选择
🌸🌸Qt的窗口(三)大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪


















在代码中使用到的QStringList可以把他当成一个字符数组,但是其实它更像C++中的list和vector的相结合,也就是双端队列deque


在对话框中,我们即可以直接输入也可以直接通过上下按钮进行调节,像字符串的话可以直接选择






