当前位置: 首页 > news >正文

qt文件操作与qss基础

文章目录

  • 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修改控件样式,最好都只写一种,不然后面改起来麻烦!

选择器的用法

在这里插入图片描述
常见的使用的就是上面的三种选择器,而且在前面类型选择器已经讲解了,我们来看剩下的示例代码:
在这里插入图片描述
再来看并集选择器,我们个图形化界面多添加几个控件:
在这里插入图片描述
来看结果:
在这里插入图片描述

结语

今天的内容就分享到这里了,不足之处欢迎留言之指出,感谢大家支持!
在这里插入图片描述

http://www.lryc.cn/news/615299.html

相关文章:

  • 2025彩虹易支付官方正版无删减完整版源码
  • B.10.01.5-电商系统的设计模式应用实战
  • 【Canvas与旗帜】圆角蓝底大黄白星十一红白带旗
  • Node.js特训专栏-实战进阶:22. Docker容器化部署
  • 北京JAVA基础面试30天打卡05
  • STM32的中断系统
  • 05.【数据结构-C语言】栈(先进后出,栈的实现:进栈、出栈、获取栈顶元素,栈实现代码,括号匹配问题)
  • 【排序算法】③直接选择排序
  • 心灵笔记:思考三部曲
  • 使用 Spring Boot 集成七牛云实现图片/文件上传
  • 机器翻译:FastText算法详解与Python的完整实现
  • istio笔记03--快速上手多集群mesh
  • 支持 UMD 自定义组件与版本控制:从 Schema 到动态渲染
  • [FOC电机控制]霍尔传感器于角度问题
  • 贪心----1.买卖股票的最佳时机
  • GoEnhance AI-AI视频风格转换工具
  • 利用whisper api实现若无字幕则自动下载音频并用 whisper 转写,再用 LLM 总结。
  • 飞算JavaAI:人工智能与Java的创新融合与应用前景
  • Klipper-G3圆弧路径算法
  • 四、RuoYi-Cloud-Plus 部署时nacos配置服务启动
  • 驾驶场景玩手机识别准确率↑32%:陌讯动态特征融合算法实战解析
  • 最长回文子串(马拉车/Manacher‘s )算法
  • Android 设置/修改系统NTP服务地址
  • 【Avalonia】无开发者账号使用iOS真机调试跨平台应用
  • 提示条贴合右侧边栏
  • Java 大视界 -- Java 大数据在智能家居场景联动与用户行为模式挖掘中的应用(389)
  • 虚拟机Ubuntu重启发现找不到共享文件夹
  • 2025AI颠覆认知!解锁智能新纪元
  • ubuntu修改密码
  • Java基础-TCP通信(多发多收和一发一收)