[Qt][QSS][下]详细讲解
目录
- 1.样式属性
- 0.前言
- 1.盒模型(Box Model)
- 2.常用控件样式属性
- 1.按钮
- 2.复选框
- 3.单选框
- 4.输入框
- 5.列表
- 6.菜单栏
- 7.注意
1.样式属性
0.前言
- QSS中的样式属性⾮常多,不需要都记住,核⼼原则是⽤到了就去查
- ⼤部分的属性和CSS是⾮常相似的
- QSS中有些属性,⼦元素能继承⽗元素,但是也有很多属性是不能继承的
- 具体哪些能继承哪些不能继承,规则⽐较复杂,实践中编写更精准的选择器是上策
- 在翻阅⽂档的时候涉及到⼀个关键术语"盒模型"(BoxModel),所以这里简单介绍以下
1.盒模型(Box Model)
-
在文档的Customizing Qt Widgets Using Style Sheets的The Box Model章节介绍了盒模型
-
⼀个遵守盒模型的控件,由下述⼏个部分构成:
-
Content:,存放控件内容,如包含的⽂本/图标等 -
Padding:内边距,边框和内容之间的距离 -
Border:控件的边框 -
Margin:外边距,边框到控件geometry返回的矩形边界的距离 -
默认情况下,外边距,内边距,边框宽度都是0

-
-
可以通过⼀些QSS属性来设置上述的边距和边框的样式
margin:设置四个⽅向的外边距,复合属性,可以拆成四个属性margin-left, margin-right, margin-top, margin-bottom- 设置:
margin: 10px:四个方向都是10px的外边框margin: 10px 20px:上下是10px,左右是20pxmargin: 10px 20px 30px 40px:上右下左(顺时针)
padding:设置四个⽅向的内边距,复合属性,也可以像margin一样拆分成四个属性border-style:设置边框样式border-width:边框的粗细border-color:边框的颜⾊border:复合属性,相当于border-style + border-width + border-color
-
示例:
QString style = "QLabel { border: 20px dashed green; padding-left: 50px; }"; a.setStyleSheet(style);
2.常用控件样式属性
1.按钮
font-size:设置⽂字⼤⼩border-radius:设置圆⻆矩形- 数值设置的越⼤,⻆就"越圆"
background-color:设置背景颜⾊- 示例:
QPushButton {font-size: 20px;border: 2px solid #8f8f91;border-radius: 15px;background-color: #dadbde; }QPushButton:pressed {background-color: #f6f7fa; }
2.复选框
::indicator:⼦控件选择器,选中checkbox中的对钩部分:hover:伪类选择器,选中⿏标移动上去的状态:pressed:伪类选择器,选中⿏标按下的状态:checked:伪类选择器,选中checkbox被选中的状态:unchecked:伪类选择器,选中checkbox未被选中的状态width:设置⼦控件宽度,对于普通控件⽆效(普通控件使⽤geometry⽅式设定尺⼨)height:设置⼦控件⾼度,对于普通控件⽆效(普通控件使⽤geometry⽅式设定尺⼨)image:设置⼦控件的图⽚- 像
QSpinBox,QComboBox等可以使⽤这个属性来设置⼦控件的图⽚
- 像
3.单选框
::indicator:⼦控件选择器,选中RadioButton中的对钩部分:hover:伪类选择器,选中⿏标移动上去的状态:pressed:伪类选择器,选中⿏标按下的状态:checked:伪类选择器,选中checkbox被选中的状态:unchecked:伪类选择器,选中checkbox未被选中的状态width:设置⼦控件宽度,对于普通控件⽆效(普通控件使⽤geometry⽅式设定尺⼨)height:设置⼦控件⾼度,对于普通控件⽆效(普通控件使⽤geometry⽅式设定尺⼨)image:设置⼦控件的图⽚- 像
QSpinBox,QComboBox等可以使⽤这个属性来设置⼦控件的图⽚
- 像
4.输入框
border-width:设置边框宽度border-radius:设置边框圆⻆border-color:设置边框颜⾊border-style:设置边框⻛格padding:设置内边距color:设置⽂字颜⾊background:设置背景颜⾊selection-background-color:设置选中⽂字的背景颜⾊selection-color:设置选中⽂字的⽂本颜⾊- 示例:
QLineEdit {border-width: 1px;border-radius: 10px;border-color: rgb(58, 58, 58);border-style: inset;padding: 0 8px;color: rgb(255, 255, 255);background:rgb(100, 100, 100);selection-background-color: rgb(187, 187, 187);selection-color: rgb(60, 63, 65); }
5.列表
::item:选中QListView中的具体条⽬:hover:选中⿏标悬停的条⽬- :
selected:选中某个被选中的条⽬ background:设置背景颜⾊border:设置边框qlineargradient:设置渐变⾊,有6个参数- 两个点描述方向,取值非常有限,非0即1,组合为矩形的四个点
x1, y1:标注起点x2, y2:标注终点
stop0, stop1:描述两个颜色,渐变过程是从stop0往stop1进行渐变的
- 两个点描述方向,取值非常有限,非0即1,组合为矩形的四个点
- 示例:
QListView::item:hover {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #FAFBFE, stop: 1 #DCDEF1); }QListView::item:selected {border: 1px solid #6a6ea9;background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6a6ea9, stop: 1 #888dd9); }
6.菜单栏
QMenuBar::item:选中菜单栏中的元素QMenuBar::item:selected:选中菜单来中的被选中的元素QMenuBar::item:pressed:选中菜单栏中的⿏标点击的元素QMenu::item:选中菜单中的元素QMenu::item:selected:选中菜单中的被选中的元素QMenu::separator:选中菜单中的分割线- 示例:
QMenuBar {background-color: #f0f0f0;spacing: 5px; }QMenuBar::item {border-radius: 10px;padding: 3px 10px;background-color: rgb(255, 250, 210); }QMenuBar::item:selected {background-color: rgb(170, 85, 0); }QMenu:item {border: 2px solid transparent;padding: 2px 10px; }QMenu::item:selected {border: 2px solid red; }QMenu::separator {height: 2px;background-color: green;margin: 0 5px; }
7.注意
- Qt无法给
QWidget顶层窗口设置背景图,如果直接给顶层窗口设置背景会失效 - 解决方法:在
QWidget之下,其余控件之上,套一个QFrame控件,将背景设在QFrame上
相关文章:
[Qt][QSS][下]详细讲解
目录 1.样式属性0.前言1.盒模型(Box Model) 2.常用控件样式属性1.按钮2.复选框3.单选框4.输入框5.列表6.菜单栏7.注意 1.样式属性 0.前言 QSS中的样式属性⾮常多,不需要都记住,核⼼原则是⽤到了就去查 ⼤部分的属性和CSS是⾮常相似的 QSS中有些属性&am…...
RAII在实现webserver这个项目中是怎么体现的?起到了什么作用
在WebServer项目中,RAII(Resource Acquisition Is Initialization,即资源获取即初始化)是一种重要的资源管理策略,它主要通过智能指针、锁、文件句柄等对象的生命周期来管理资源的分配和释放。RAII在WebServer项目中的…...
QT下显示自己派生的QWidget界面(提升为)
在实际开发过程中,我们可能有这样的需求,自己绘制一个仪表盘界面,然后将其贴到主界面上方。 这个时候就会用到“提升为”这个功能,该功能目的是将QWidget提升为自己派生的QWdiget子类,具体操作为,在主界面…...
jvm监控工具一览
下面是对 BTrace、JAD、JMAP、JSTAT、JSTACK、JINFO 以及 MARK 工具的比较表: 工具/属性功能适用场景使用难度是否侵入式是否需要重启 JVMBTrace动态跟踪和监控 Java 应用程序性能分析、故障排查、日志收集、安全监控中等无侵入式否JAD反编译 Java 字节码文件&…...
使用 Visual Studio 编辑器作为 DailyNotes 的 markdown 编辑器
DailyNotes 是我使用过的最优秀的日常笔记管理工具,为它配置一个好的 markdown 编辑器,可以大幅提升效率。 除了使用 Typora 作为 markdown 编辑器,Visual Studio Code 也是一个非常不错的选择,令人惊喜的是,它也支持…...
Linux下进程间的通信--管道
关于进程间的通信 Linux进程间通信(Inter-Process Communication,IPC)是指在多个进程之间传输数据或信号的一些方法。由于Linux中的进程有各自独立的地址空间,因此它们不能直接访问对方的内存。为了实现进程间的通信,…...
【算法】汉诺塔、顺序查找和二分查找法、冒泡排序、插入排序、选择排序
1 时间装饰器 2 汉诺塔 3 顺序查找和二分查找法 4 冒泡排序 5 插入排序 6 选择排序 1 时间装饰器 import timedef cal_time(func):def wrapper(*args, **kwargs):t1 time.time()result func(*args, **kwargs)t2 time.time()print("%s running time: %s secs." % …...
Mac电脑遇到DNS解析失败,ip可以访问,域名无法访问
当Mac电脑遇到DNS解析失败的问题时,可以尝试以下几个解决方法: 1.检查网络连接:确保Mac已连接到可用的网络,并且网络连接正常。可以尝试重新连接Wi-Fi或使用有线连接来排除网络问题。 2.清除DNS缓存:打开终端应…...
走进 “星星的孩子” 的世界:理解与关爱儿童自闭症
在这个充满生机与活力的世界里,有一群特殊的孩子,他们仿佛来自遥远的星球,沉浸在自己的独特世界中,难以与外界进行有效的沟通和互动。他们是自闭症儿童,也被称为 “星星的孩子”。 自闭症,又称孤独症谱系障…...
【学习笔记】7、存储器、复杂可编程器件和现场可编程门阵列
可编程逻辑器件PLD复杂可编程逻辑器件CPLD现场可编程门阵列FPGA 7.1 只读存储器(ROM) 7.1.1 ROM的结构 ROM存储器 存储阵列 地址译码器 输出控制电路 存储阵列,由许多存储单元(1bit)组成。每次读出一组数据&…...
Java面试题———RabbitMQ篇
目录 1.你们项目中哪里用到了RabbitMQ 2、为什么会选择使用RabbitMQ 3、使用RabbitMQ如何保证消息不丢失 4、消息的重复消费问题如何解决的 5、如何解决消息堆积在MQ的问题 6、RabbitMQ如何保证消费的顺序性 7、RabbitMQ的延迟队列有了解过嘛 8、RabbitMQ如何设置消息过…...
2 种方式申请免费 SSL 证书,阿里云 Certbot
如何使用免费的 SSL 证书,有时在项目中需要使用免费的 SSL 证书,Aliyun 提供免费证书,三个月有效期,可以直接在aliyun 申请,搜索 SSL 证书,选择测试证书。 Aliyun 证书需要每三月来来换一次,页…...
49.给出一个字符串数组,实现一个算法给定一组字符串,将字母异位词组合在一起
49. Group Anagrams 题目 给定一组字符串,将字母异位词组合在一起。 示例: 输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [ [“ate”,“eat”,“tea”], [“nat”,“tan”], [“bat”] ] 注意: 所有输入均为小写字母。输出的顺序可以…...
如何制作统信UOS启动盘?
如何制作统信UOS启动盘? 一、下载UOS系统安装镜像二、在UOS系统环境下制作启动盘步骤一:准备U盘步骤二:打开启动盘制作工具步骤三:选择ISO镜像文件步骤四:选择安装介质并格式化步骤五:等待制作完成 三、在W…...
Conda命令
查看当前有哪些虚拟环境 conda env list创建(删除)一个新的虚拟环境 conda create --name test1 python3.8 conda env remove --name test1进入和退出一个环境 conda activate test1 conda deactivate列出当前包安装的包 conda list安装包 conda in…...
perl——获取数组中元素的索引
参考: 如何获取数组中元素的索引 如果保证所有元素都是唯一的,或者只有第一个索引是感兴趣的: my ($index) grep { $array[$_] ~~ $element } 0 .. $#array;...
Vector vs 数组:Java中Vector相比数组的优点
每日自动更新各类学习教程及工具下载合集 https://pan.quark.cn/s/874c74e8040e 在Java编程中,数组(Array)和Vector都是用于存储数据的容器,但它们在设计和功能上有所不同。选择使用哪种数据结构取决于具体的需求。在这…...
掌握步进电机控制算法:提升自动化精度的关键(代码示例)
引言 步进电机因其高精度定位、良好的控制性能和简单的驱动方式,广泛应用于各类自动化设备中,如3D打印机、数控机床和机器人等。为了实现对步进电机的精确控制,采用合适的控制算法至关重要。本文将详细介绍几种常见的步进电机控制算法&#…...
MySQL的源码安装及基本部署(基于RHEL7.9)
这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…...
RUP-系统架构师(五十六)
1在RUP中采用“41”视图模型来描述软件系统的体系结构。在该模型中,最终用户侧重于(),系统工程师侧重于()。 问题1 问题2 A 实现视图 B 进程视图 C 逻辑视图 D 部署视图 解析: RUP有 逻辑…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
