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.pswp.cn/pingmian/92424.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring.config.import 不存在

确认spring.config.import的语法是否正确根据Spring Cloud的官方文档&#xff0c;该属性的值应该指向配置信息&#xff0c;例如对于Nacos配置中心&#xff0c;其格式通常为&#xff1a;spring:config:import: nacos://<nacos-server-addr>/<data-id>?group<gro…

kettle插件-kettle MinIO插件,轻松解决文件上传到MinIO服务器

场景&#xff1a;周二下班刚下地铁的时候有一位大佬&#xff0c;咨询kettle是否可以适配MinIO&#xff0c;功能要实现将图片或者base64通过kettle直接上传到MinIO服务器。接到需求&#xff0c;沟通需求&#xff0c;开干。经过3天左右研发和调试MinIO插件已经成功交付&#xff0…

套接字编程UDP

1.创建套接字int socket(int domain, int type, int protocol);第一个参数&#xff0c;底层用的ip报文统一使用的网络协议都是AFIN第二个参数&#xff0c;面向流的传输协议SOCK_DGRAM&#xff08;数据报套接字类型&#xff09;&#xff1a;支持数据报&#xff08;无连接、不可靠…

计算机网络:如何判断B或者C类IP地址是否划分了子网

要判断B类或C类IP地址是否划分了子网,核心在于通过子网掩码分析其网络位长度是否超过该类地址的默认网络位长度。以下是具体的判断方法和细节说明: 一、基础概念:IP地址类别与默认网络位 IP地址分为A、B、C三类(常用),每类地址的默认网络位长度(即未划分子网时,用于标…

智慧农业温室大棚物联网远程监控与智能监测系统

一、痛点破局&#xff1a;从“靠天吃饭”到“知天而作”传统温室大棚管理依赖人工巡检与经验判断&#xff0c;存在三大核心痛点&#xff1a;数据孤岛&#xff1a;温湿度、光照、CO₂浓度等关键参数分散于不同设备&#xff0c;难以实时整合分析&#xff1b;响应滞后&#xff1a;…

PID学习笔记1

在学习江协科技PID课程时&#xff0c;做一些笔记&#xff0c;对应视频1-4&#xff0c;对应代码&#xff1a;02&#xff0c;03&#xff0c;04&#xff0c;0502-位置式PID定速控制main.c:#include "stm32f10x.h" // Device header #include "Del…

C++入门学习3

10.类和对象 C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。 C中定义类&#xff08;结构体&#xff09;的语法&#xff1a; class className {// 类体&#xff1a;由成员函数和成员变量组成}; // 一定要注意…

奇偶校验码原理与FPGA实现

奇偶校验原理与FPGA实现写在前面一、基础原理2.1 奇校验2.2 偶校验2.3 缺点二、举个例子3.1 奇校验例子3.2 偶校验例子3.3 检测出错例子三、FPGA实现写在后面写在前面 奇偶校验码是一种简单的检错码&#xff0c;主要用于数据传输或存储过程中检测奇数个比特错误或者偶数个比特错…

Python中的Lambda函数详解

Lambda函数&#xff08;匿名函数&#xff09;是Python中一种简洁的函数定义方式&#xff0c;它允许你快速创建小型、一次性的函数对象而无需使用标准的def关键字。1. Lambda函数的基本语法lambda arguments: expressionlambda&#xff1a;定义匿名函数的关键字arguments&#x…

进阶向:Python编写网页爬虫抓取数据

Python网页爬虫入门指南&#xff1a;从零开始抓取数据在当今数据驱动的时代&#xff0c;网络爬虫已成为获取公开信息的重要工具。Python凭借其丰富的库和简洁的语法&#xff0c;成为编写网络爬虫的首选语言。本文将详细介绍如何使用Python编写一个基础的网页爬虫。什么是网页爬…

客服Agent革命:智能客服系统的技术实现与效果评估

客服Agent革命&#xff1a;智能客服系统的技术实现与效果评估 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0c;每一个特性都是我…

C++-红黑树

1、红黑树的概念红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍&#xff0c;…

在Python中避免使用`None`表示特殊情况:函数返回值与异常处理的最佳实践 (Effective Python 第20条)

在Python编程中&#xff0c;函数的设计与实现直接影响代码的可读性、可维护性和健壮性。一个常见的问题是如何处理函数的返回值&#xff0c;尤其是在需要表示某种特殊或异常情况时。许多开发者习惯性地使用None来表示这些特殊情况&#xff0c;但这种方法往往会导致意想不到的错…

从反射到方法句柄:深入探索Java动态编程的终极解决方案

&#x1f31f; 你好&#xff0c;我是 励志成为糕手 &#xff01; &#x1f30c; 在代码的宇宙中&#xff0c;我是那个追逐优雅与性能的星际旅人。 ✨ 每一行代码都是我种下的星光&#xff0c;在逻辑的土壤里生长成璀璨的银河&#xff1b; &#x1f6e0;️ 每一个算法都是我绘制…

算法_python_学习记录_01

人心的成见是一座大山。一旦有山挡在面前&#xff0c;则很难到达下一站。所需要做的&#xff0c;是穿过这座山。 偶然间看了一个视频&#xff0c;说的是EMASMA的自动交易策略&#xff0c;这个视频做的很用心&#xff0c;在入场的时间不仅要看EMA的金叉&#xff0c;还需要看其他…

机器翻译中的语言学基础详解(包括包括语法、句法和语义学等)

文章目录一、语法&#xff08;Grammar&#xff09;&#xff1a;语言规则的底层框架1.1 传统语法理论的应用1.2 生成语法&#xff08;Generative Grammar&#xff09;1.3 依存语法&#xff08;Dependency Grammar&#xff09;二、句法&#xff08;Syntax&#xff09;&#xff1a…

MQTT:Dashboard访问授权

目录一、认证1.1 创建认证器1.2 多认证器二、授权2.1 ACL文件授权配置2.2 使用内置数据库授权配置一、认证 认证&#xff1a;就是验证客户端的身份。 1.1 创建认证器 选择认证方式配置数据源配置数据源的相关参数 认证器创建之后&#xff0c;在使用客户端连接Dashboard时&am…

Serper注册无反应

google邮箱才行&#xff0c;163邮箱注册无反应&#xff0c;其他邮箱没试过 在尝试websailor系列的时候&#xff0c;需要注册serper&#xff0c;获取Google Search Key serper.dev/dashboard

聊聊经常用的微服务

聊聊微服务 架构演变 单体架构&#xff1a; All in One&#xff0c;所有的功能模块都在一个工程里。 SOA架构&#xff1a; 这个架构当不当正不正&#xff0c;对于现在来说&#xff0c;有点老&#xff0c;甚至需要ESB&#xff0c;WebService之类的&#xff0c;基本不会使用了。…

第十四届蓝桥杯青少年组省赛 编程题真题题解

明天我就要考蓝桥杯省赛了&#xff0c;本蒟蒻已瑟瑟发抖&#xff0c;所以现在写一篇文章。 题目分别为&#xff1a; 1.​​​​​​B4270 [蓝桥杯青少年组省赛 2023] 特殊运算符 2.B4271 [蓝桥杯青少年组省赛 2023] 四叶玫瑰数 3.B4272 [蓝桥杯青少年组省赛 2023] 质因数的…