[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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52041.shtml

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

相关文章

RK3588——网口实时传输视频

由于通过流媒体服务器传输画面延迟太高的问题,不知道是没有调试到合适的参数还是其他什么问题。诞生了这篇博客。 RK3588板端上接摄像头,采集画面,通过网口实时传输给上位机并显示。 第一代版本 RK3588代码 import cv2 import socket imp…

C++发送邮件:如何稳定实现邮件发送功能?

C发送邮件安全性探讨!C编程中发送邮件的技巧? 邮件发送功能是许多应用程序的重要组成部分,无论是用于通知用户,还是用于自动化报告。AokSend将探讨如何在C环境中稳定地实现邮件发送功能,确保邮件能够可靠地到达收件人…

windows环境基于python 实现微信公众号文章推送

材料: 1、python 2.7 或者 python3.x 2、windows 可以通过 “python -m pip --version” 查看当前的pip 版本 E:\Downloads\newsInfo>python -m pip --version pip 20.3.4 from C:\Python27\lib\site-packages\pip (python 2.7) 3、windows 系统 制作&#xf…

云计算实训30——自动化运维(ansible)

自动化运维 ansible----自动化运维工具 特点: 部署简单,使用ssh管理 管理端与被管理端不需要启动服务 配置简单、功能强大,扩展性强 一、ansible环境搭建 准备四台机器 安装步骤 mo服务器: #下载epel [rootmo ~]# yum -y i…

windows主机查询url请求来自哪里发起的

最近使用fiddler抓包,看到一直有http://conna.gj.qq.com:47873 的请求, 对此进行溯源,确定是不是被攻击了。 在dos里查询端口进程:netstat -ano | findstr :47873 查到来自8020的进程id 查看此进程应用,发现竟然是…

C++ 设计模式——外观模式

外观模式 C 设计模式——外观模式主要组成部分1. 外观类(Facade)2. 子系统类(Subsystem)3. 客户端(Client) 例一:工作流程示例1. 外观类(Facade)2. 子系统类(…

IT管理:我与IT的故事6--数字化建设规划工作坊圆满开展

在数字化浪潮席卷全球的时代背景下,企业的数字化转型已成为必然趋势。IT 部落精心打造的数字化规划实操工作坊顺利举办,为众多CIO的数字化转型之路点亮了明灯。 本次工作坊特别邀请到了业界知名的大咖讲师 Frank,他在数字化领域深耕多年&am…

【源码+文档+调试讲解】学院网站

摘 要 使用旧方法对冀中工程技师学院网站的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在冀中工程技师学院网站的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次…

Day23 第十站 文件IO的多路复用

#include <myhead.h>void insert_client(int *client_arr,int *len,int client) {//client_arr[n]{3,4} len&client_count,client_count2;//添加 5 client_arr[2(*len)]5(client)client_arr[*len]client;(*len); } int find_client(int *client_arr,int len,int clie…

Rembg.js - 照片去背景AI开发包

Rembg.js适用于为人物、建筑、电商产品等各种照片自动去除背景&#xff0c;可直接在浏览器内运行&#xff0c; 提供前端JavaScirpt二次开发接口。官方下载地址&#xff1a;Rembg.js图片去背景开发包 。 1、目录组织 Rembg.js开发包的目录组织说明如下&#xff1a; rembg …

RocketMQ源码分析 - 环境搭建

RocketMQ源码分析 - 环境搭建 环境搭建源码拉取导入IDEA调试1) 启动NameServer2) 启动Broker3) 发送消息4) 消费消息 环境搭建 依赖工具 JDK&#xff1a;1.8MavenIntellij IDEA 源码拉取 从官方仓库 https://github.com/apache/rocketmq clone或者download源码。 源码目录…

【题目/训练】:双指针

引言 我们已经在这篇博客【算法/学习】双指针-CSDN博客里面讲了双指针、二分等的相关知识。 现在我们来做一些训练吧 经典例题 1. 移动零 思路&#xff1a; 使用 0 当做这个中间点&#xff0c;把不等于 0(注意题目没说不能有负数)的放到中间点的左边&#xff0c;等于 0 的…

基于java的酒店管理系统设计与实现

系统分析与设计 需求分析 1.系统概要 根据餐饮系统的流程&#xff0c;完成从用户登录到开台点菜&#xff0c;到结账收银&#xff0c;到统计一条线的信息化管理&#xff0c;因此整个餐饮管理信息系统的研发内容就是开发一整套餐饮管理信息系统&#xff0c;实现餐饮业务的计算…

【Vue3】集成 Element Plus

【Vue3】集成 Element Plus 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的…

后端开发刷题 | 合并两个排序的链表

描述 输入两个递增的链表&#xff0c;单个链表的长度为n&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围&#xff1a; 0≤n≤1000&#xff0c;−1000≤节点值≤1000 如输入{1,3,5},{2,4,6}时&#xff0c;合并后的链表为{1,2,3,4,5,6}&#xff0c;…

MySQL各个版本root账号没有最高权限的解决方法

一、详细报错 ERROR 1045 (28000): Access denied for user ‘root’‘localhost’ (using password: YES) 报错原因&#xff08;分析过程&#xff09;&#xff1a; rootlocalhost用户密码修改导致 解决方法&#xff1a; 跳过权限验证启动数据库&#xff0c;并修改密码。如下…

怎么快速定位bug?如何编写测试用例?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 作为一名测试人员如果连常见的系统问题都不知道如何分析&#xff0c;频繁将前端人员问题指派给后端人员&#xff0c;后端人员问题指派给前端人员&#xff0c;那么在…

独立站PrestaShop安装

独立站PrestaShop安装 独立站PrestaShop安装系统需求下载PrestaShop浏览器下载命令行下载 解压PrestaShop创建数据库移动PrestaShop源码到web目录composer安装依赖包nginx配置访问域名进入安装页面选择语言许可协议系统兼容性店铺信息Content of your store系统配置数据库店铺安…

数据结构day03(栈 Stack 顺序栈、链式栈 )内含具体详细代码实现

目录 【1】栈 Stack 1》栈的定义 2》顺序栈 2》链式栈 4》顺序栈的链式栈的区别 【1】栈 Stack 1》栈的定义 栈&#xff1a;是只允许在一端进行插入或删除的线性表&#xff0c;首先栈是一种线性表&#xff0c;但限定这种线性表只能在某一端进行插入和删除操作。 栈顶&…

仿照ContentLoadingProgressBar 的特点在Android项目中自定义Loading对话框

ContentLoadingProgressBar 是 Android 中的一个控件&#xff0c;继承自 ProgressBar。它在 ProgressBar 的基础上添加了一些特殊功能&#xff0c;主要用于在加载内容时显示进度。它的一些主要特点如下&#xff1a; 自动隐藏和显示&#xff1a;ContentLoadingProgressBar 会在…