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

Qt Style Sheets-使用样式表自定义 Qt 部件

使用样式表自定义 Qt 部件

在使用样式表时,每个小部件都被视为具有四个同心矩形的框:边距矩形、边框矩形、填充矩形和内容矩形。框模型对此进行了更详细的描述。

盒模型

以下是四个同心矩形在概念上的呈现方式:

  1. 边距超出边框。
  2. 边框绘制在边距和内边距之间。
  3. 边框内的填充位于边框和实际内容之间。
  4. 内容是在我们去除边距、边框和填充后,原始小部件或子控件所剩余的部分。

边距( margin)、边框宽度( border-width)和内边距( padding )属性默认值均为零。在这种情况下,所有四个矩形(marginborderpaddingcontent)完全重合。 

可以使用背景图像 (background-image) 属性为小部件指定背景。默认情况下,背景图像仅绘制在border内的区域。这可以使用背景裁剪( background-clip )属性进行更改。可以使用背景重复( background-repeat )和背景原点( background-origin)来控制背景图像的重复和原点。

背景图像不会随小部件的大小进行缩放。要提供随小部件大小缩放的“外观”或背景,必须使用边框图像( border-image)。由于边框图像属性提供了替代背景,因此在指定边框图像时无需指定背景图像。在两者都被指定的情况下,边框图( border-image)像会覆盖背景图像(background-image)。

此外,图像( image )属性可用于在边框图像上绘制图像。指定的图像不会平铺或拉伸,并且当其大小与小部件的大小不匹配时,使用图像位置( image-position)属性指定其对齐方式。与背景图像和边框图像不同,在图像属性中可以指定 SVG,在这种情况下,图像会根据小部件的大小自动缩放。

呈现规则的步骤如下:

  1. 为整个渲染操作设置裁剪(边框半径 border-radius)
  2. 绘制背景(背景图像 background-image)
  3. 绘制边框(边框图像 border-image、边框 border)
  4. 绘制覆盖图像(图像 image)

子控件

一个小部件被视为相互叠加绘制的子控件的层次结构(树)。例如,QComboBox 绘制下拉子控件,然后是向下箭头子控件。因此,QComboBox 的呈现方式如下:

  1.  渲染 QComboBox { } 
  2. 渲染 QComboBox::drop-down { } 
  3. 渲染 QComboBox::down-arrow { } 

子控件具有父子关系。对于QComboBox,下箭头的父级是下拉框,而下拉框的父级是小部件本身。子控件使用子控件位置和子控件原点属性在其父级内定位。 

注意:对于复杂的小部件,如QComboBox和QScrollBar,如果自定义了一个属性或子控件,则所有其他属性或子控件也必须进行自定义。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Freedom of Choice
  • R语言模型评估网格搜索
  • Linux网络——套接字与UdpServer
  • Haproxy服务
  • 第四周:机器学习笔记
  • 接口测试JMeter-1.接口测试初识
  • 电磁兼容专栏说明
  • 深入浅出WebRTC—ALR
  • git-各种场景-撤销指令
  • 文件IO(Ubuntu)
  • TypeScript与面向对象编程
  • Flutter动画详解第二篇之显式动画(Explicit Animations)
  • ArduPilot开源代码之AP_DAL_RangeFinder
  • 详解数据结构之队列、循环队列(源码)
  • filebeat,kafka,clickhouse,ClickVisual搭建轻量级日志平台
  • JS 中的深拷贝与浅拷贝
  • Android单元测试 - 几个重要问题
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Docker: 容器互访的三种方式
  • Git初体验
  • go语言学习初探(一)
  • Phpstorm怎样批量删除空行?
  • swift基础之_对象 实例方法 对象方法。
  • uni-app项目数字滚动
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 闭包,sync使用细节
  • 复杂数据处理
  • 基于 Babel 的 npm 包最小化设置
  • 通过几道题目学习二叉搜索树
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序01:wepy框架整合iview webapp UI
  • 在weex里面使用chart图表
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 1.Ext JS 建立web开发工程
  • Java性能优化之JVM GC(垃圾回收机制)
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #pragma once
  • $.ajax()方法详解
  • (145)光线追踪距离场柔和阴影
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (算法设计与分析)第一章算法概述-习题
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (转)linux下的时间函数使用
  • (转)mysql使用Navicat 导出和导入数据库
  • (转载)利用webkit抓取动态网页和链接
  • ****三次握手和四次挥手
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core 成都线下面基会拉开序幕
  • .Net 路由处理厉害了
  • .NET框架类在ASP.NET中的使用(2) ——QA