qss样式表笔记大全(一):qss名词解析(包含相关示例)

简介: qss样式表笔记大全(一):qss名词解析(包含相关示例)

若该文为原创文章,转载请注明原文出处

本文章博客地址:http://blog.csdn.net/qq21497936/article/details/79423622

长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)

Qt开发专栏:qss样式表笔记大全(点击传送门)

qss样式表笔记大全(一):qss名词解析(包含相关示例)
qss样式表笔记大全(二):可设置样式的窗口部件列表(上)(包含相关示例)
qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(包含相关示例)
qss样式表笔记大全(四):可设置样式的窗口部件列表(下)(包含相关示例)

 

前话

     qss可以说是qt版本的css,语法类似但也存在不同点,建议阅读本文档之前先直接百度以下学习qss的基本使用方式。

     qss主要是用于qt对ui界面的美化。

     实践方法:直接打开qmake目录下的qtdesigner,新建控件后,右键点击设置样式。

     该笔记主要参考《最全Qt样式表使用说明》,学习实践以及做项目过程中重新整理笔记,最终目标为形成一套qss样式表大全,将随着时间持续更新。

 

十种程序员主题风格

   

 

阅读方式

     本笔记可当作手册,也可以当作学习教材,参考资料。

     先了解基本的“名词解析”后,可按照以下三个方式阅读:

     方式一:详细查看示例,按照示例,一步一步阅读。

     方式二:需要设置某个类qss时,根据索引找,查看详细示例。

     方式三:直接阅读所有样式,适合系统的查漏补缺学习。

 

名词解析

选择器(selector)

     选择特定的类,如示例1中的QPushButton#pushButton_shutdown,选择器的选择方式有七种,如下表:

选择对象

示例

描述

所有控件

*

选择所有当前控件和其下的所有窗口部件

所有某类的控件对象,被其子控件对象继承

QPushButton

选择该类的所有实例,以及该类的子控件实例(允许该类型)

所有某类的控件对象,不被其子控件对象继承

.QPushButton

选择该类的所有实例,不包括子控件实例

某类的指定控件对象

QPushButton#objectName

选择该类实例中对象名为objectName的实例

选择匹配某属性的控件对象

QPushButton[y=”0”]

选择该类满足该属性条件的所有实例

某类控件的子控件对象

QFrame > QPushButton

选择指定该类下的直接子控件实例

某类控件的子孙控件对象

QFrame QPushButton

选择指定该类下的所有子孙控件实例

示例:QPusuButton使用选择器

QPushButton#pushButton_shutdown {
    background-color: rgb(0, 255, 0, 100);     // rgb可使用rgba
}
QPushButton#pushButton_shutdown:hover {
    background-color: rgb(0, 255, 0);          // rgb可使用rgb,默认a为255
}
QPushButton#pushButton_shutdown:pressed {
    background-color: red;                     // 可使用预知的关键字
}
QPushButton#pushButton_shutdown:checked {
    background-color: red;                     // 可使用预知的关键字
}

图片.png

子控件(sub-control)

       子控件(同辅助选择器),对于复杂的控件有必要对其子控件窗口进行控制,不同的控件类包含不同的子控件,如示例2中的QCheckBox中包含indicator子控件。

示例:QCheckBox包含sub-control

QCheckBox#checkBox::indicator{
    width:10px;
    height:10px;
    background-color: red; 
}

图片.png

 

状态选择器(pseudo-states)

     状态选择器,可根据不同控件的不同状态对窗口进行控制,如”hover”表示鼠标放上时的状态,”pressed”表示鼠标保持按下时的状态,可根据状态设置不同的外观,如示例1的QPushbutton的三种状态。

属性(property)

     属性,是一个窗口部件所固有的特征,每一个类型的窗口控件都会有属于他们自己的属性,如width,height(辅助选择器才有),color等等,定制控件的不同外观。注意:属性是使用逻辑否(!)操作符,如!hover,是鼠标未放在上面的其他状态。

属性值(value)

     属性值,跟在每一个属性后面有一个值,可以是bool,int,10px,red,rgb(0,0,0)等等,根据属性的不同,属性值的类型不同,通过修改指定控件的指定属性的属性值来实现不同的效果,如示例1:background-color,实例2:width、height、background-color。

盒模型(box model)

     盒模型,包含了4个影响布局的矩形,如下图:

图片.png

  • content rectangle:绘制窗口部件的内容的区域,如文字,图片。
  • padding rectangle:包围content rectangle,由padding属性指定填充操作,主要是窗口部件内容与边缘线(border)之间的空隙,由top,right,bottom和left设置他的大小,缺省为0。
  • border rectangle:包围padding rectangle,为边界预留空间,可认为是窗口的外框线。
  • margin rectangle:最外面的矩形,主要是负责与其他窗口部件间的距离。

       注意:若都没有指定,缺省是四个重合在一起。

角弧度(radius)

     窗口部件4个角弧度,设置radius设置角的弧度,如border-radius:4px。

前景色(color)

     窗口部件的前景色用户绘制窗口部件上面的文本,由color设置。

背景色(背景图片)

     窗口部件背景色,用于填充矩形,可通过background-color属性设置。当需要使用图片时,可使用background-image属性,指定资源控制,背景图片在盒模式区域的对齐和平铺方式可通过background-position和background-repeadr属性指定。注意:笔者设置背景图一般直接使用border-image,该属性缺省是缺省是进行平铺和拉伸的。

九宫格(border-image,border-width)

     用于有边框分割的图像,图像可缩放和平铺其中的每个部分。一个本元素可将图片分成9个区域,四个角区域是不会变化,其他5个区域按照特定的方式进行变化。效果如下图:

使用border-image和border-width属性,语法如下:

QLabel#label_6 {
    border-image:url("E:/111.jpg") 18 16 15 14 repeat repeat;
    border-width:18 16 15 14;
}

berder-image: url [top left bottomright [repeat|no-repeat repeate|no-repeat];

berder-width: top left bottom right;

       技巧:这里笔者提供一个小技巧,可先仅使用border-image: url top leftbottom right来确认边界,如下表的label_2。

示例:QLabel使用九宫格

效果                               

 

代码                                                                                                    

 

图片.png


QLabel#label {

background-image: url("E:/111.jpg");

}

图片.png


1. QLabel#label_2 { /* 用于确认边界 */
2. border-image: url("E:/111.jpg") 18 16 15 14;
3. }
图片.png
1. QLabel#label_3 {
2. border-image: url("E:/111.jpg") 18 16 15 14;
3. border-width: 18 16 15 14;
4. }
图片.png
1. QLabel#label_4 {
2. border-image: url("E:/111.jpg") 18 16 15 14 repeat no-repeat;
3. border-width: 18 16 15 14;
4. }

图片.png


1. QLabel#label_5 {
2. border-image: url("E:/111.jpg") 18 16 15 14 no-repeat repeat;
3. border-width: 18 16 15 14;
4. }

图片.png


1. QLabel#label_6 {
2. border-image: url("E:/111.jpg") 18 16 15 14 repeat repeat;
3. border-width: 18 16 15 14;
4. }

渐变色(Gradient)

  • 线性渐变(qlineargradient):两点连成的线,线上设置不同颜色,位置范围[0,1],参考示例。
  • 圆心辐射渐变(qradialgradient):从圆心开始向外辐射,圆心属性为cx,cy,半径为radius,fx是stop为0时相对半径范围的位置,参考示例。
  • 圆心角度渐变(qconicalgradient):从圆心开始,以x轴为0°逆时钟转,圆心属性为cx,cy,

示例:QPushButton使用qlineargradient线性渐变色

QPushButton#pushButton_3 {
    background: qlineargradient( x1:0, y1:0,x2:1, y2:1,
                                 stop:0 rgba(0, 0, 0, 255),
                                 stop:0.5 rgba(0,0, 0, 0),
                                 stop:1 rgba(255, 255, 255, 255));
}

图片.png

 

示例:QPushButton使用qradialgradient圆心辐射渐变色

QPushButton#pushButton_4 {
    background: qradialgradient( cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, 
                              stop:0 rgba(0, 0, 0, 255), 
                              stop:0.5 rgba(0, 0, 0, 0),
                              stop:1 rgba(255, 255, 255, 255))
}

图片.png

QPushButton#pushButton_6 {
    background: qradialgradient( cx:0.5, cy:0.5, radius:0.5, fx:1.0, fy:0.0, 
                              stop:0 rgba(0, 0, 0, 255), 
                              stop:0.5 rgba(0, 0, 0, 0),
                              stop:1 rgba(255, 255, 255, 255))
}

图片.png

示例:QPushButton使用qconicalgradient圆心角度渐变

QPushButton#pushButton_5 {
    background:qconicalgradient( cx:0.5, cy:0.5, angle:0, 
                              stop:0 rgba(255, 0, 0, 255), 
                              stop:0.25 rgba(0, 255, 0, 255), 
                              stop:0.5 rgba(0, 0, 255, 255), 
                              stop:0.75 rgba(0, 0, 0, 0), 
                              stop:1.0 rgba(0, 0, 0, 255));
}

图片.png

QPushButton#pushButton_7 {
    background:qconicalgradient( cx:0.4, cy:0.4, angle:45, 
                              stop:0 rgba(255, 0, 0, 255), 
                              stop:0.25 rgba(0, 255, 0, 255), 
                              stop:0.5 rgba(0, 0, 255, 255), 
                              stop:0.75 rgba(0, 0, 0, 0), 
                              stop:1.0 rgba(0, 0, 0, 255));
}

图片.png

 

qss样式表笔记大全(一):qss名词解析(包含相关示例)

qss样式表笔记大全(二):可设置样式的窗口部件列表(上)(包含相关示例)

qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(包含相关示例)

qss样式表笔记大全(四):可设置样式的窗口部件列表(下)(包含相关示例)

 

原博主博客地址:https://blog.csdn.net/qq21497936

原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062

本文章博客地址:http://blog.csdn.net/qq21497936/article/details/79401577


相关文章
|
6月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
590 29
|
6月前
|
Web App开发 移动开发 前端开发
React音频播放器样式自定义全解析:从入门到避坑指南
在React中使用HTML5原生<audio>标签时,开发者常面临视觉一致性缺失、样式定制局限和交互体验割裂等问题。通过隐藏原生控件并构建自定义UI层,可以实现完全可控的播放器视觉风格,避免状态不同步等典型问题。结合事件监听、进度条拖拽、浏览器兼容性处理及性能优化技巧,可构建高性能、可维护的音频组件,满足跨平台需求。建议优先使用成熟音频库(如react-player),仅在深度定制需求时采用原生方案。
214 12
|
8月前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
7月前
|
人工智能 文字识别 自然语言处理
保单AI识别技术及代码示例解析
车险保单包含基础信息、车辆信息、人员信息、保险条款及特别约定等关键内容。AI识别技术通过OCR、文档结构化解析和数据校验,实现对保单信息的精准提取。然而,版式多样性、信息复杂性、图像质量和法律术语解析是主要挑战。Python代码示例展示了如何使用PaddleOCR进行保单信息抽取,并提出了定制化训练、版式分析等优化方向。典型应用场景包括智能录入、快速核保、理赔自动化等。未来将向多模态融合、自适应学习和跨区域兼容性发展。
|
7月前
|
数据采集 搜索推荐 API
小红书笔记详情 API 接口:获取、应用与收益全解析
小红书(RED)是国内领先的生活方式分享平台,汇聚大量用户生成内容(UGC),尤以“种草”笔记闻名。小红书笔记详情API接口为开发者提供了获取笔记详细信息的强大工具,包括标题、内容、图片、点赞数等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建内容分析工具、笔记推荐系统、数据爬虫等应用,提升用户体验和运营效率,创造新的商业模式。本文将详细介绍该API的获取、应用及潜在收益,并附上代码示例。
1003 13
|
9月前
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
519 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
8月前
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
259 12
|
9月前
|
搜索推荐 机器人 定位技术
SEO 搜索引擎优化核心名词全解析
本文详细解析了 SEO(搜索引擎优化)中的核心名词,包括关键词、页面标题、元描述、网站地图、反向链接、锚文本、内部链接、页面权重、域权重、搜索引擎机器人、索引、收录、白帽 SEO 和黑帽 SEO。掌握这些术语及其作用,有助于提升网站在搜索引擎中的可见性和排名,实现长期发展。
296 20
|
9月前
|
安全 编译器 Linux
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
本文深入解析了利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,通过分析FreeFlow FTP 1.75版本的漏洞,展示了如何通过构造过长的用户名触发缓冲区溢出并调用计算器(`calc.exe`)。文章详细介绍了攻击原理、关键代码组件及其实现步骤,并提出了有效的防范措施,如输入验证、编译器保护和安全编程语言的选择,以保障系统的安全性。环境搭建基于Windows XP SP3和Kali Linux,使用Metasploit Framework进行攻击演示。请注意,此内容仅用于教育和研究目的。
251 4
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
775 37

推荐镜像

更多
  • DNS