当前位置: 首页 > 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.dtcms.com/a/323109.html

相关文章:

  • 3.5.2_1 随机访问介质访问控制
  • Docker容器部署Tomcat线上商城
  • 组件通信的方式
  • AI编程工具 | Trae介绍
  • [SC]高效地调试SystemC模型中的语法错误
  • 如何用OpenAI SDK调用Ollama LLM
  • 智慧养老场景跌倒检测准确率↑32%:陌讯多模态融合算法实战解析
  • GPT-5深度解析:革命性AI模型的全面报告与实战指南
  • windows10 ubuntu 24.04 双系统 安装教程
  • ubuntu dpkg命令使用指南
  • 【排序算法】②希尔排序
  • Delphi:TList/TObjectList 设计中的 Notify 设计范式
  • Day38--动态规划--322. 零钱兑换,279. 完全平方数,139. 单词拆分,56. 携带矿石资源(卡码网),背包问题总结
  • 10 分钟用 FastAPI 将机器学习模型上线为 REST API
  • day28 IPC通信机制
  • C++隐式转换的魔法与陷阱:explicit关键字的救赎
  • RecyclerView 缓存机制
  • centos 怎么将一些命令设置为快捷命令
  • 2025华数杯数学建模C题:可调控生物节律LED光源全解析
  • LLM表征的提取方式
  • 【Python 高频 API 速学 ⑥】
  • 【Mac】MLX:Lora微调工作流
  • 【排序算法】①直接插入排序
  • QT第二讲-信号和槽
  • uniapp实现的圆形滚盘组件模板
  • ThingsBoard配置邮件发送保姆级教程(新版qq邮箱)
  • SkyWalking-2--Java Agent是什么?
  • Qt与嵌入式设备中的字节序问题
  • 客服Agent革命:智能客服系统的技术实现与效果评估
  • 八、《DaaS(设备即服务):企业轻资产化新路径》--从97.4%首期投入削减到AI算力高效迭代的范式革命