QT控件通过qss设置子控件的对齐方式、大小自适应等

一些复杂控件,是有子控件的,每个子控件,都可以通过qss的双冒号选择器来选中,进行独特的样式定义。很多控件都有子控件,太多了,后面单独写一篇文章来介绍各个控件的子控件。这里就随便来几个例子

例如下拉列表控件,右边有个下拉按钮(QComboBox::drop-down)就是子控件,这个下拉按钮里面还有一个箭头(QComboBox::down-arrow),也是子控件。

展开的下拉列表,每个条目(QAbstractItemView::item)也都是子控件。

又比如spinbox,有个上下箭头可以调整数值大小,这个上下箭头也是子控件。

下面通过样式表,来调整这个spinbox的上下按钮的位置:

QSpinBox 
{
    border: 1px solid black;
	padding-left:5px;

}

QSpinBox::up-button 
{/*上按钮*/
    subcontrol-origin: border;/*以盒子模型的border区域为坐标系*/
    subcontrol-position: top right;/*位于border的右上角*/
    width: 16px;
    border: 3px solid green;/*绿边框*/
    background-color: red;/*红背景*/
}
QSpinBox::up-arrow 
{/*上按钮中的箭头 最好是用贴图*/
    background-color: white;/*这里图简便,就用白色方块代替了*/
    width: 5px;
    height: 5px;
}

QSpinBox::down-button 
{/*下按钮*/
    subcontrol-origin: border;
    subcontrol-position: left;/*border坐标系的左边*/
    width: 16px;
    border-image: url(:/images/spindown.png) 1;
    border: 3px solid blue;/*绿边框*/
	background-color: green;
}

 以上代码效果如下:

如果想让上下按钮的高度自适应QSpinBox的高度怎么办?

答:需要一些简单的基础知识,定义位置需要知道坐标系和坐标,而坐标又分为绝对和相对(默认)。坐标值的定义比较直观,形如:left: 5px; right:1em; top:10pt;  bottom:20%; 上下左右都可以指定,但是注意,不要写出矛盾的语句。

下面我们看一下,在相对坐标系和绝对坐标系下,设置同样的坐标,效果有何区别:


QSpinBox::up-button 
{/*上按钮*/
    subcontrol-origin: border;/*以盒子模型的border区域为坐标系*/
    subcontrol-position: top right;/*位于border的右上角*/   
    border: 3px solid green;/*绿边框*/
    background-color: red;/*红背景*/
	width:20px;
	position:absolute;/*绝对坐标*/
	bottom:5px;/*距离坐标系底部5px*/
}

 

 以上左图是基于原先位置上移了5px,而右图是让按钮距离border底部5px(以为我们已经设置了以border为参考系)。 

理解了坐标系*(参考系)的概念,把红绿两个子控件的高度自适应QSpinBox的高度就简单了:

QSpinBox::down-button 
{/*下按钮*/
    subcontrol-origin: border;
    subcontrol-position: left;/*border坐标系的左边*/
    border-image: url(:/images/spindown.png) 1;
    border: 3px solid blue;/*绿边框*/
	background-color: green;
	width:20px;
	position:absolute;/*绝对参考系*/
	bottom:0px;/*距离坐标系底5px*/
}
QSpinBox::down-arrow 
{/*下按钮中的箭头*/
    background-color: white;
    width: 13px;/*用白色直线来绘制减号*/
    height: 3px;
}

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java | 数组排序算法

一、冒泡排序 冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移到数组前面,把较大的元素移到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部升到顶…

Vue中使用Typescript及Typescript基础

准备工作 新建一个基于ts的vue项目 通过官方脚手架构建安装 # 1. 如果没有安装 Vue CLI 就先安装 npm install --global vue/cli最新的Vue CLI工具允许开发者 使用 TypeScript 集成环境 创建新项目。 只需运行vue create my-app 然后选择选项,箭头键选择 Manuall…

【Git】初始化仓库配置与本地仓库提交流程

目录 一、仓库配置邮箱与用户名 二、本地仓库提交流程 一、仓库配置邮箱与用户名 【Git】Linux服务器Centos环境下安装Git与创建本地仓库_centos git仓库搭建_1373i的博客-CSDN博客https://blog.csdn.net/qq_61903414/article/details/131260033?spm1001.2014.3001.5501 在…

Rocket-Spring Cloud Stream

一.Spring Cloud Stream简介 1.微服务中会经常使用消息中间件,通过消息中间件在服务与服务之间传递消息,例如RabbitMQ、Kafka和RocketMQ,无论使用哪一种消息中间件和服务之间都有一点耦合性,这个耦合性指的是原来使用RabbitMQ&am…

JenKins工作流程

程序员提交代码到Git/SVN仓库,触发钩子程序向 JenKins 进行通知,Jenkins 调用Git/SVN插件获取源码,调用Maven打包为war包,调用Deploy to web container插件部署到Tomcat服务器。

vue利用echarts简单实现具有中心节点的知识图谱

效果展示 边缘节点可拖动,其大小可以根据传入的值而变化(比如我更喜欢芒果,所以给了芒果更大的权值,在显示的时候芒果所在的节点显示的比例更大) 代码下载 https://download.csdn.net/download/David_house/881151…

【小梦C嘎嘎——启航篇】类和对象(上篇)

【小梦C嘎嘎——启航篇】类和对象(上篇)😎 前言🙌什么是面向过程?什么是面向对象?什么是类和对象类中的访问权限属性类的大小计算this 指针构造函数析构函数 总结撒花💞 😎博客昵称&…

redis(12):springboot使用redis注解做缓存

1 新建springboot项目 2 相关注解 @EnableCaching 在启动类上加上注解启动缓存 #作用在你要缓存的数据上 @Cacheable(key="#id",cacheNames="com.sxt.service.impl.MenuServiceImpl") @Cacheput 解决脏读 @CachEvict(解决脏读) @Cacheconfig(全…

Reinforcement Learning with Code 【Chapter 9. Policy Gradient Methods】

Reinforcement Learning with Code This note records how the author begin to learn RL. Both theoretical understanding and code practice are presented. Many material are referenced such as ZhaoShiyu’s Mathematical Foundation of Reinforcement Learning, . 文章…

【COlor传感器】通过扰动调制光传感实现智能光传输的占用分布估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Mysql 数据库开发及企业级应用

文章目录 1、Mysql 数据库开发及企业级应用1.1、为什么要使用数据库1.1.1、数据库概念(Database)1.1.2、为什么需要数据库 1.2、程序员为什么要学习数据库1.3、数据库的选择1.3.1、主流数据库简介1.3.2、使用 MySQL 的优势1.3.3、版本选择 1.4、Windows …

神码ai火车头伪原创插件怎么用【php源码】

大家好,本文将围绕python绘制烟花特定爆炸效果展开说明,如何用python画一朵花是一个很多人都想弄明白的事情,想搞清楚用python画烟花的代码需要先了解以下几个事情。 1、表白烟花代码 天天敲代码的朋友,有没有想过代码也可以变得…

python与深度学习(十):CNN和cifar10二

目录 1. 说明2. cifar10的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试。首…

Java IO,BIO、NIO、AIO

操作系统中的 I/O 以上是 Java 对操作系统的各种 IO 模型的封装,【文件的输入、输出】在文件处理时,其实依赖操作系统层面的 IO 操作实现的。【把磁盘的数据读到内存种】操作系统中的 IO 有 5 种: 阻塞、 非阻塞、【轮询】 异步、 IO复…

【java的类型数据】——八大类型数据

文章目录 前言字面常量字面常量的分类: 数据类型和变量变量的包装类和范围范围整型变量byteintshortlong 浮点型变量双精度浮点型double单精度浮点型float 字符型变量char布尔型变量 boolean 类型转换自动类型转换(隐式)强制类型转换(显式&am…

Android跨进程传大图思考及实现——附上原理分析

1.抛一个问题 这一天,法海想锻炼小青的定力,由于Bitmap也是一个Parcelable类型的数据,法海想通过Intent给小青传个特别大的图片 intent.putExtra("myBitmap",fhBitmap)如果“法海”(Activity)使用Intent去传递一个大的Bitmap给“…

排序链表——力扣148

文章目录 题目描述法一 自顶向下归并排序法二)自底向上归并排序 题目描述 题目的进阶问题要求达到 O(nlogn) 的时间复杂度和 O(1) 的空间复杂度,时间复杂度是 O(nlogn) 的排序算法包括归并排序、堆排序和快速排序(快速排序的最差时间复杂度是…

推荐带500创作模型的付费创作V2.1.0独立版系统源码

ChatGPT 付费创作系统 V2.1.0 提供最新的对应版本小程序端,上一版本增加了 PC 端绘画功能, 绘画功能采用其他绘画接口 – 意间 AI,本版新增了百度文心一言接口。 后台一些小细节的优化及一些小 BUG 的处理,前端进行了些小细节优…

【Java面试丨企业场景】常见技术场景

一、单点登录怎么实现的 1. 介绍 单点登录(Single Sign On,SSO):只需要登录一次,就可以访问所有信任的应用系统 2. 解决方案 JWT解决单点登录问题 用户访问应用系统,会在网关判断Token是否有效如果Tok…

极简并优雅的在IDEA使用Git远程拉取项目和本地推送项目

连接Git 搜索Git然后将你下载好的Git的文件目录位置给他弄进去就行 本地分支管理 分支管理通常是在IDEA的右下角找到 连接远程仓库 方法1本地项目推送到远程仓库 如果当前项目还没交给Git管理的则按照以下图所示先将项目交给Git管理 然后此时文件都会是红色的,这表…