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

[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,左右是20px
        • margin: 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:设置⼦控件的图⽚
    • QSpinBoxQComboBox等可以使⽤这个属性来设置⼦控件的图⽚

3.单选框

  • ::indicator:⼦控件选择器,选中RadioButton中的对钩部分
  • :hover:伪类选择器,选中⿏标移动上去的状态
  • :pressed:伪类选择器,选中⿏标按下的状态
  • :checked:伪类选择器,选中checkbox被选中的状态
  • :unchecked:伪类选择器,选中checkbox未被选中的状态
  • width:设置⼦控件宽度,对于普通控件⽆效(普通控件使⽤geometry⽅式设定尺⼨)
  • height:设置⼦控件⾼度,对于普通控件⽆效(普通控件使⽤geometry⽅式设定尺⼨)
  • image:设置⼦控件的图⽚
    • QSpinBoxQComboBox等可以使⽤这个属性来设置⼦控件的图⽚

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:描述两个颜色,渐变过程是从stop0stop1进行渐变的
  • 示例
    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有 逻辑…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...