qt 滚动条 美化

news2024/10/25 6:34:05

 qt QScrollBar 滚动条分为竖直与水平滚动条,两者设置上类似,但也有一些不同,下面主要讲述美化及注意事项。

一、竖直滚动条

竖直滚动条分为7个部分: sub-line、  up-arrow 、sub-page、 hanle、 add-line、 dow-arrow、 add-page 其中,sub-line区域包含up-arrow区域,add-line区域包含down-arrow区域。

handle是滚动条的滑块部分。

问题:

想要定制化设置滚动条: 滚动条宽度40,上下箭头高度设置50,滑块长度100。

实现的具体代码如下:

ui->tableWidget->setStyleSheet("QScrollBar::vertical { width: 40px; border:0px ;padding:50px 0px 50px 0px;}"
                                                    "QScrollBar::handle:vertical {background:#CDCDCD;border-radius:3px;min-height: 100px;width:40px; }"
                                                    "QScrollBar::add-line:vertical {height: 50px;subcontrol-origin:margin;}"
                                                   "QScrollBar::sub-line:vertical {background:red;height: 50px;subcontrol-origin:margin; }"
                                                   "QScrollBar::up-arrow:vertical {background:green;subcontrol-origin: margin; height: 40px; border-image: url(:/res/image/arrow-drop.png);}"
                                                   "QScrollBar::down-arrow:vertical {subcontrol-origin: margin; height: 40px; border-image: url(:/res/image/arrow-drop.png);}"
                                         );

注意:

1. 通过 实际效果图可以看到,sub-line区域比up-arrow区域大

2. 要想上下箭头区域显示,必须设置border、padding或  border、margin

QScrollBar::vertical { width: 40px; border:0px ;padding:50px 0px 50px 0px;}

或者

QScrollBar::vertical { width: 40px; border:0px ;margin:50px 0px 50px 0px;}

 其中,竖直滚动条设置宽度(width: 40px),水平滚动条设置高度;

3.sub-line add-line 必须设置subcontrol-origin:margin

4.添加 悬浮、按压时的样式----效果图中未体现

"QScrollBar::handle:vertical:hover,QScrollBar::handle:vertical:pressed { margin: 0 1px 0 1px;  background: #606060;}"
 "QScrollBar::add-line:vertical:hover, QScrollBar::add-line:vertical:pressed {background:#606060;}"
"QScrollBar::sub-line:vertical:hover, QScrollBar::sub-line:vertical:pressed {background:#606060;}"
"QScrollBar::up-arrow:vertical:hover,QScrollBar::up-arrow:vertical:pressed { border-image: url(:/res/white.svg);}"
 "QScrollBar::down-arrow:vertical:hover,QScrollBar::down-arrow:vertical:pressed { border-image: url(://res/white.svg);}"

5.代码解读

QScrollBar::vertical { width: 40px; border:0px ;margin:50px 0px 50px 0px;}/*竖直滚动条宽度;边距*/
QScrollBar::handle:vertical {background:#CDCDCD;border-radius:3px;min-height: 100px;width:40px; }/*滑块背景色;滑块高度 */
QScrollBar::add-line:vertical {height: 50px;subcontrol-origin:margin;}/* add-line高度设置;subcontrol必须设置,*/
QScrollBar::sub-line:vertical {background:red;height: 50px;subcontrol-origin:margin; }/*sub-line区域设置:高度;subcontrol必须设置 */
QScrollBar::up-arrow:vertical {background:green;subcontrol-origin: margin; height: 40px; border-image: url(:/res/image/arrow-drop.png);}/*箭头区域设置 */
QScrollBar::down-arrow:vertical {subcontrol-origin: margin; height: 40px; border-image: url(:/res/image/arrow-drop.png);}/* */

实际效果图:

6.整体代码

  ui->tableWidget->setStyleSheet("QScrollBar::vertical { width: 40px; border:0px ;padding:50px 0px 50px 0px;}"
                                                   "QScrollBar::handle:vertical {background:#CDCDCD;border-radius:3px;min-height: 100px;width:40px; }"
                                                   "QScrollBar::add-line:vertical {height: 50px;subcontrol-origin:margin;}"
                                                   "QScrollBar::sub-line:vertical {background:red;height: 50px;subcontrol-origin:margin; }"
                                                   "QScrollBar::up-arrow:vertical {background:green;subcontrol-origin: margin; height: 40px; border-image: url(:/res/arrow-drop.png);}"
                                                   "QScrollBar::down-arrow:vertical {subcontrol-origin: margin; height: 40px; border-image: url(:/res/ff.png);}"
                                                   "QScrollBar::handle:vertical:hover,QScrollBar::handle:vertical:pressed { margin: 0 1px 0 1px;  background: #606060;}"
                                                   "QScrollBar::add-line:vertical:hover, QScrollBar::add-line:vertical:pressed {background:#606060;}"
                                                   "QScrollBar::sub-line:vertical:hover, QScrollBar::sub-line:vertical:pressed {background:#606060;}"
                                                   "QScrollBar::up-arrow:vertical:hover,QScrollBar::up-arrow:vertical:pressed { border-image: url(:/res/white.svg);}"
                                                   "QScrollBar::down-arrow:vertical:hover,QScrollBar::down-arrow:vertical:pressed { border-image: url(:/res/white.svg);}"
                                                   );

二、水平滚动条

水平滚动条跟竖直滚动条差不多,也是分为7个部分: sub-line、  left-arrow 、sub-page 、hanle、 add-line、 right-arrow、 add-page 其中,sub-line区域包含left-arrow区域,add-line区域包含right-arrow区域。

实现主要代码如下:

QScrollBar::horizontal { height:40px; border:0px ;margin:0px 40px  0px 40px;}//设置滚动条高度,边距
QScrollBar::handle:horizontal {background:red;border-radius:3px;min-width:100px;height:40px; }//设置handle宽度,高度
QScrollBar::add-line:horizontal {background:#F0F0F0;width: 40px;subcontrol-origin:margin;}
QScrollBar::sub-line:horizontal {subcontrol-position:left;background:#F0F0F0;width: 40px;subcontrol-origin:margin; }//注意:必须设置 位置 left
QScrollBar::left-arrow:horizontal {subcontrol-origin: margin; width: 40px; border-image: url(:/a6.svg);}//左箭头
QScrollBar::right-arrow:horizontal {subcontrol-origin: margin; width: 40px; border-image: url(:/b6.svg);}

注意:

1. 水平滚动条设置高度,通过 height:40px进行设置,同时,margin:0px 40px  0px 40px;一定要设置,且与竖直滚动条设置的是不一样的。

水平滚动条设置高度,竖直滚动条设置宽度。

2.handle的长度、高度 通过min-width:100px;height:40px 进行设置

3.注意:sub-line:horizontal设置的与竖直滚动条不同,必须要指定位置 subcontrol-position:left ,其他的与竖直滚动条是一样的操作

4.其他的设置就与竖直滚动条一样了

竖直滚动条、水平滚动条整体代码如下:

ui->tableWidget->setStyleSheet("QScrollBar::vertical { width: 40px; border:0px ;margin:40px 0px 40px 0px;}"
"QScrollBar::handle:vertical {background:#CDCDCD;border-radius:3px;min-height: 100px;width:40px; }"
"QScrollBar::add-line:vertical {background:#F0F0F0;height: 40px;subcontrol-origin:margin;}"
"QScrollBar::sub-line:vertical {background:#F0F0F0;height: 40px;subcontrol-origin:margin; }"
"QScrollBar::up-arrow:vertical {subcontrol-origin: margin; height: 40px; border-image: url(://up-arrow-1.svg);}"
"QScrollBar::down-arrow:vertical {subcontrol-origin: margin; height: 40px; border-image: url(://down-arrow-2.svg);}"
"QScrollBar::handle:vertical:hover,QScrollBar::handle:vertical:pressed { margin: 0 1px 0 1px;  background: #2c2c2c;}"
"QScrollBar::add-line:vertical:hover, QScrollBar::add-line:vertical:pressed {background:#2c2c2c;}"
"QScrollBar::sub-line:vertical:hover, QScrollBar::sub-line:vertical:pressed {background:#2c2c2c;}"
"QScrollBar::up-arrow:vertical:hover,QScrollBar::up-arrow:vertical:pressed { border-image: url(://up-arrow-3.svg);}"
"QScrollBar::down-arrow:vertical:hover,QScrollBar::down-arrow:vertical:pressed { border-image: url(://down-arrow-4.svg);}"
"QScrollBar::horizontal { height:40px; border:0px ;margin:0px 40px  0px 40px;}"
"QScrollBar::handle:horizontal {background:#CDCDCD;border-radius:3px;min-width:100px;height:40px; }"
"QScrollBar::add-line:horizontal {background:#F0F0F0;width: 40px;subcontrol-origin:margin;}"
"QScrollBar::sub-line:horizontal {subcontrol-position:left;background:#F0F0F0;width: 40px;subcontrol-origin:margin; }"
"QScrollBar::left-arrow:horizontal {subcontrol-origin: margin; width: 40px; border-image: url(://left-arrow-5.svg);}"
"QScrollBar::right-arrow:horizontal {subcontrol-origin: margin; width: 40px; border-image: url(://right-arrow-6.svg);}"
"QScrollBar::handle:horizontal:hover,QScrollBar::handle:horizontal:pressed { margin: 0 1px 0 1px;  background: #2c2c2c;}"
"QScrollBar::add-line:horizontal:hover, QScrollBar::add-line:horizontal:pressed {background:#2c2c2c;}"
"QScrollBar::sub-line:horizontal:hover, QScrollBar::sub-line:horizontal:pressed {background:#2c2c2c;}"
"QScrollBar::left-arrow:horizontal:hover,QScrollBar::left-arrow:horizontal:pressed { border-image: url(://left-arrow-7.svg);}"
"QScrollBar::right-arrow:horizontal:hover,QScrollBar::right-arrow:horizontal:pressed { border-image: url(://right-arrow-8.svg);}"
);

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

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

相关文章

SQLI LABS | Less-8 GET-Blind-Boolian Based-Single Quotes

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-8/ 靶场提示 …

前端实现监控埋点

前端实现监控埋点 前言 我们在应用开发完成本地测试跑通以后上线,线上可能会出现一些测试没有测出来的问题,那么这个时候我们如何定位到哪里会出现问题呢,因为在测试环境可能浏览器的不同,或是没有做兜底出现了一些线上的问题&a…

TLS协议基本原理与Wireshark分析

01背 景 随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然而,随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中,车辆通过无线网络与其他车辆、基础设施以及云端服务进行…

取消element-ui中账号和密码登录功能浏览器默认的填充色,element-ui登录账号密码输入框禁用浏览器默认填充色问题

标题 问题展示 修改后 <div class="loginForm"><el-formref="formB":model="formDataB":rules="rulesB"class="login-form"label-position="left"><el-form-item prop="userNo" clas…

Spring Boot与Flyway实现自动化数据库版本控制

一、为什么使用Flyway 最简单的一个项目是一个软件连接到一个数据库&#xff0c;但是大多数项目中我们不仅要处理我们开发环境的副本&#xff0c;还需要处理其他很多副本。例如&#xff1a;开发环境、测试环境、生产环境。想到数据库管理&#xff0c;我们立刻就能想到一系列问…

Java最全面试题->Java基础面试题->JavaWeb面试题->Maven面试题

文章目录 Maven什么是maven&#xff1f;maven优缺点&#xff1f;maven常见的依赖范围有哪些?maven 坐标的含义?maven 常用命令?maven构建的过程&#xff1f;maven的生命周期&#xff1f;使用“mvn clean package”命令进行项目打包&#xff0c;该命令具体做了什么&#xff1…

Tcp_Sever(线程池版本的 TCP 服务器)

Tcp_Sever&#xff08;线程池版本的 TCP 服务器&#xff09; 前言1. 功能介绍及展示1.1 服务端连接1.2 客户端连接&#xff08;可多个用户同时在线连接服务端&#xff09;1.3 功能服务1.3.1 defaultService&#xff08;默认服务&#xff09;1.3.2 transform&#xff08;大小写转…

【STM32 ADC】

STM32 ADC功能简介 文章目录 前言一、ADC简介二、逐次逼近型ADC三、STM32的ADC内部框图四、STM32ADC输入通道五、规则组的四种转换模式六、规则组的触发源七、数据对齐八、转换时间九、校准部分十.ADC采样测量电压的程序设计十一、ADC的迟滞比较、滤波设计十二、四通道ADC采用问…

【github小问题】——push后报错error: src refspec master does not match any

温馨提示&#xff1a;这个问题可能有多种问题导致如未commit&#xff0c;本文在此讲述的是我遇到的这一种情况。 一、问题描述 从本地上传文件至github仓库时&#xff0c;add和commit都执行了且成功&#xff0c;但是执行git push -u origin master后出现了&#xff1a;error: …

深入理解JavaScript:两大编程思想和ES6类以及对象概念解析

文章目录 两大编程思想ES6中的类和对象 两大编程思想 面向过程 &#xff08;Procedural-Oriented Programming&#xff0c;POP&#xff09; 定义&#xff1a;面向过程的编程是一种基于过程调用的编程范式&#xff0c;它将程序看作是一系列函数或过程的集合。每个函数负责完成…

【K8S系列】Kubernetes pod节点Unknown 问题及解决方案详解【已解决】

在 Kubernetes 中&#xff0c;Pod 的状态为 Unknown 表示无法获取 Pod 的当前状态。这通常意味着 Kubernetes API 服务器无法与 Pod 所在的节点通信&#xff0c;或者 Kubelet 进程遇到问题。以下将详细介绍 Unknown 状态的原因、解决方案以及如何配置健康检查以提高系统的稳定性…

函数的实参和形参

什么是实参&#xff1f;什么是形参&#xff1f; 其实让我用语言来形容并不好描述&#xff0c;我们看例子&#xff1a; int add(int x , int y)//括号内就是形参 { int zxy; return z; } #include <stdio.h> int main() { int a8; int b9; int vadd(a,b);//括号内放置的参…

django-vue-admin测试环境搭建

django-vue-admin测试环境搭建 引言开发工具入门demo示例踩过的坑数据库字符集创建数据表前端路由 自定义app效果展示 引言 django-vue-admin框架&#xff0c;大幅度降低应用层代码难度,让每一个刚开始学习 django和vue的新手都能快速上手。这将会是你上手学习 djangovue的最佳…

PyQt 入门教程(3)基础知识 | 3.1、使用QtDesigner创建.ui文件

文章目录 一、使用QtDesigner创建.ui文件1、创建.ui文件2、生成.py文件3、使用新生成的.py文件4、编辑新生成的.py文件 一、使用QtDesigner创建.ui文件 1、创建.ui文件 打开PyCharm&#xff0c;使用自定义外部工具QtDesigner创建mydialog.ui文件&#xff0c;如下&#xff1a; …

pandas库——基础

1.概述 Pandas 是一个开源的第三方 Python 库&#xff0c;从 Numpy 和 Matplotlib 的基础上构建而来 Pandas 名字衍生自术语 "panel data"&#xff08;面板数据&#xff09;和 "Python data analysis"&#xff08;Python 数据分析&#xff09; Pandas 已…

Python酷库之旅-第三方库Pandas(166)

目录 一、用法精讲 761、pandas.Interval.closed_right属性 761-1、语法 761-2、参数 761-3、功能 761-4、返回值 761-5、说明 761-6、用法 761-6-1、数据准备 761-6-2、代码示例 761-6-3、结果输出 762、pandas.Interval.is_empty属性 762-1、语法 762-2、参数 …

【Mac 上将 MOV 格式转换为 MP4 格式的简易指南】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【C++】哈希实现unordered_map/set

关于哈希模拟实现unordered_map/set&#xff0c;与红黑树模拟实现map/set的大体思路相似。 【C】红黑树模拟实现map和set-CSDN博客 HashTable的迭代器 operator template<class K,class T,class KeyOfT> struct __HashTableIterator {typedef __HashTableIterator<…

电梯导航 - 点击标题跳转对应区域

需求 点击标题&#xff0c;使用a标签的锚点自动跳到对应区域滚动区域&#xff0c;右边自动切换对应的标题 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

大话红黑树之(3)进阶解析

红黑树高阶知识讲解 红黑树作为一种自平衡的二叉查找树&#xff08;BST&#xff09;&#xff0c;在大多数语言和库中有着广泛应用。它能够在常规操作&#xff08;查找、插入、删除等&#xff09;中保持 O(log n) 的时间复杂度。这篇文章从红黑树的高级特性、性能优化、旋转机制…