文章目录
- qt文件操作
- 文件概述
- 文件读写
- 文件属性
- 界面优化
- qss基础
- 选择器的用法
- 结语
很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
作者:٩( ‘ω’ )و260
我的专栏:qt,Linux,C++进阶,C++初阶,数据结构初阶,题海探骊,c语言
欢迎点赞,关注!!
qt文件操作
文件概述
我们在c语言中,使用fopen函数打开文件,fclose函数关闭文件,fread,fwrite来读写文件。
在c+++中,使用fstream来打开文件,close来关闭文件,>>,<<来读写文件。
在linux中,我们使用open打开文件,close来关闭文件,read,write来关闭文件。
虽然说有很多编程语言都有对应文件的操作,qt自己也实现了一套:
QTemporaryFile:主要用于创建临时文件的类,如果该对象销毁,对应文件也销毁了。
QSaveFile:当一个文件需要重新写入大量数据到旧文件的时候,会创建一个临时文件,当用户把数据写完之后,会删除旧文件,以相同名称创建新文件。不能直接替换,万一写错了,旧数据不在了,但是新数据页用不了。
QSerialPort:串口,一种古老的通信方式,嵌入式开发中比较常见。
我们对文件操作常见的属性有读,写,追加写。
而且,从上面的继承关系来看,也可以写QFile::Append的。子类也会继承父类的属性。
我们再来通过qt看一下常见文件操作的函数:
后面的几种就不在介绍了,我们直接来看QFile。
文件读写
接下来我们实现一个程序,即使用保存文件在状态栏打印保存文件的地址,使用打开文件界面打印出文件的内容。直接来看代码:
mainWindow的构造函数:
我们通过font对象来修改显示框中的文字,同时,只要QAction选项被点击,就会发出一个triggered信号。
槽函数:
其中readALL函数返回的其实是字节数组,但是QString提供了使用字节数组来初始化QSting。同时,如果我们想使用QString来转换成字节数组,QString中封装了一个toutf8()。所以,字节数组和QString是可以相互转换的。
总结:文件操作的流程
打开文件->对文件进行操作(读,写,追加写)->关闭文件
来看结果:
该文件是先前再该项目中已经拟定好的文本文件了。
文件属性
可以通过代码来获取文件属性,文件属性在linux中谈的也比较多,这里直接给出示例代码:
还能其他更多属性,比如时间等等,这里不在赘述
来看结果:
界面优化
qss基础
现在看到的全部网页或者程序中,其实都是用了css来进行了界面优化。qss与css类似,但是功能上逊色于css。
在qt中,c++代码和qss代码都能够对控件样式进行修改,但是如果说两种代码修改同一个样式,qss代码的优先级更高。
那么该如何设置呢?
设置语法:
选择器 {
属性名: 属性值;
}
选择器:先选择某一个/类控件,其中进行的各种属性设置,都是针对选中控件生效,同时对其选中控件的子控件也会生效
我们进行的属性设置其实就是设置其中的键值对!!
我们直接来看代码示例:
此时我们直接通过setstylesheet函数来完成对控件字体的属性修改:
此时我们只是设置局部按钮的属性,那如果说需要设置全局的呢?
需要对main.cpp文件进行修改:
如果我们将QPushButton改为QWidget,也会发生同样的效果,因为属性对选择器的修改也包含选择器的子控件:
如果对全局的控件进行修改,需要修改main.cpp文件中的QApplication对象
如果我们既设置了全局样式,又设计了局部样式,此时样式相同会发生什么呢?样式不同又会发生什么呢?
局部和全局同时设置,如果是相同的样式,即此时冲突了,局部优先级更高,如果此时冲突,那么两种效果就会叠加
来看示例:
我们来看结果:
属性冲突,局部优先级更高。如果属性不冲突,会叠加。
我们修改局部button字体大小属性:
结果:
此时就是叠加的效果了。
我们可以通过全局样式可以设置一种全部控件的基础样式,对于不满足要求的控件再来进行局部样式修改
那么上面的代码有没有什么弊端呢?
我们能够发现其中c++代码和qt代码是相互耦合的,耦合度高肯定不是一件好事,我们该如何改正呢?
可以使用qrc机制,创建一个文件,随后我们打开该文件,通过qrc管理的文件内容来修改qss,这样就能够解耦合。
这种方式虽然可以,但是相较于第二种方法还是麻烦太多了。
第二种方法我们可以直接通过ui文件来设置,通过ui文件设置,我们还能够预览效果:
步骤:ui文件中右键找到改变样式表,在集中写入qqss代码即可。
通过改变样式表的方法,我们还可以对qss代码进行检验,正确则会显示有效样式表,反之无效样式表。
设置qss代码十分灵活,如果设置qss代码发现样式没有修改,排查思路:
1:全局样式
2:指定控件样式
3:指定控件的父控件样式
4:qss中文件样式(qrc管理)
5:ui文件样式
所以以后使用qss修改控件样式,最好都只写一种,不然后面改起来麻烦!
选择器的用法
常见的使用的就是上面的三种选择器,而且在前面类型选择器已经讲解了,我们来看剩下的示例代码:
再来看并集选择器,我们个图形化界面多添加几个控件:
来看结果:
结语
今天的内容就分享到这里了,不足之处欢迎留言之指出,感谢大家支持!