QScrollArea样式

news2024/9/21 12:57:08

        QScrollBar垂直滚动条分为sub-line、add-line、add-page、sub-page、up-arrow、down-arrow和handle几个部分。
        QScrollBar水平滚动条分为sub-line、add-line、add-page、sub-page、left-arrow、right-arrow和handle几个部分。

部件如下图所示:

/* 整个滚动条区域样式 */
QScrollBar:vertical {
  border: 2px solid grey;
  background: #32CC99;
  width: 30px;
  /* 滑块活动区域间距,这个间距如果小于add-line和sub-line的高度或宽度滚动滑块将会覆盖add-line和sub-line,所以可以通过margin: 0px 0 0px 0;来隐藏滚动条两头区域*/
  margin: 32px 0 32px 0;
}

/* 滑块区域样式 */
QScrollBar::handle:vertical {
  background: rgb(250, 3, 3);
  border: 2px solid rgb(8, 8, 8);
  border-radius: 10px;
  /*无效,宽度由QScrollBar width控制*/
  width: 10px;
  /*可以通过margin设置滑块小于QScrollBar width,再鼠标滑过滑块样式中再重新设置margin,达到鼠标滑过滑块变大的效果,但是圆角设置border-radius不生效了!!!*/
  margin: 0 5px 0 5px;
  min-height: 50px;
  /*max-height无效!!!*/
  max-height: 50px;
}

/* 鼠标滑过滑块样式 */
QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed {
  border-radius: 10px;
  margin: 0 1px 0 1px;
  background: rgb(221, 81, 17);
}

/* 向上区域样式 */
QScrollBar::sub-line:vertical {
  border: 2px solid rgb(18, 208, 221);
  background: #0c5a20;
  height: 30px;
  subcontrol-position: top;
  subcontrol-origin: margin;
}

/* 向下区域样式 */
QScrollBar::add-line:vertical {
  border: 2px solid rgb(68, 218, 31);
  background: #123026;
  height: 30px;
  subcontrol-position: bottom;
  subcontrol-origin: margin;
}

/* 向上箭头样式 */
QScrollBar::up-arrow:vertical {
  border-image:url(:/scrollarea/resources/image/scrollarea/arrowup.png);
  border: 2px solid rgb(22, 12, 68);
  width: 20;
  height: 20;
  background: rgb(130, 141, 165);
}

/* 向下箭头样式 */
QScrollBar::down-arrow:vertical {
  border-image:url(:/scrollarea/resources/image/scrollarea/arrowdown.png);
  border: 2px solid rgb(223, 104, 104);
  width: 20;
  height: 20;
  background: rgb(233, 159, 177);
}

/* 当鼠标放到向上区域的时候 */
QScrollBar::sub-line:vertical:hover {}

/* 当鼠标放到向下区域的时候 */
QScrollBar::add-line:vertical:hover {}

/* 当鼠标放到向上箭头上的时候 */
QScrollBar::up-arrow:vertical:hover {
  /* height:9px;width:8px; */
  /* border-image:url(:/images/a/2.png); */
  subcontrol-position: top;
}

/* 当鼠标放到向下箭头上的时候 */
QScrollBar::down-arrow:vertical:hover {
  /* height:9px;width:8px; */
  /* border-image:url(:/images/a/4.png); */
  subcontrol-position: bottom;
}

/* 滑块上面区域样式 */
QScrollBar::sub-page:vertical {
  background: rgb(117, 196, 13);
  border: 2px solid rgb(223, 104, 104);
}

/* 滑块下面区域样式 */
QScrollBar::add-page:vertical {
  background: rgba(255, 102, 11);
  border: 2px solid rgb(223, 104, 104);
}

/* ############################################ */
/* 整个滚动条区域样式 */
QScrollBar:horizontal {
  border: 2px solid grey;
  background: #32CC99;
  height: 30px;
  /* 滑块活动区域间距,这个间距如果小于add-line和sub-line的高度或宽度滚动滑块将会覆盖add-line和sub-line,所以可以通过margin: 0px 0 0px 0;来隐藏滚动条两头区域*/
  margin: 0 32px 0 32px;
}

/* 滑块区域样式 */
QScrollBar::handle:horizontal {
  background: rgb(250, 3, 3);
  border: 2px solid rgb(8, 8, 8);
  /*无效,高度由QScrollBar height控制*/
  height: 10px;
  /*可以通过margin设置滑块小于QScrollBar height,再鼠标滑过滑块样式中再重新设置margin,达到鼠标滑过滑块变大的效果*/
  margin: 5px 0 5px 0;
  min-width: 50px;
  /*max-width无效!!!*/
  max-width: 50px;
}

/* 鼠标滑过滑块样式 */
QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed {
  margin: 0 1px 0 1px;
  background: rgb(221, 81, 17);
}

/* 向左区域样式 */
QScrollBar::sub-line:horizontal {
  border: 2px solid rgb(18, 208, 221);
  background: #0c5a20;
  width: 30px;
  /*sub-line:horizontal要设置height但是sub-line:vertical却不要设置width!!!*/
  height: 20px;
  subcontrol-position: left;
  subcontrol-origin: margin;
}

/* 向右区域样式 */
QScrollBar::add-line:horizontal {
  border: 2px solid rgb(68, 218, 31);
  background: #123026;
  width: 30px;
  height: 20px;
  subcontrol-position: right;
  subcontrol-origin: margin;
}

/* 向左箭头样式 */
QScrollBar::left-arrow:horizontal {
  border-image:url(:/scrollarea/resources/image/scrollarea/arrow-left.png);
  border: 2px solid rgb(22, 12, 68);
  width: 20;
  height: 20;
  background: rgb(130, 141, 165);
}

/* 向右箭头样式 */
QScrollBar::right-arrow:horizontal {
  border-image:url(:/scrollarea/resources/image/scrollarea/arrowright.png);
  border: 2px solid rgb(223, 104, 104);
  width: 20;
  height: 20;
  background: rgb(233, 159, 177);
}

/* 当鼠标放到向左区域的时候 */
QScrollBar::sub-line:horizontal:hover {}

/* 当鼠标放到向右区域的时候 */
QScrollBar::add-line:horizontal:hover {}

/* 当鼠标放到向左箭头上的时候 */
QScrollBar::left-arrow:horizontal:hover {
  /* height:9px;width:8px; */
  /* border-image:url(:/images/a/2.png); */
  subcontrol-position: top;
}

/* 当鼠标放到向右箭头上的时候 */
QScrollBar::right-arrow:horizontal:hover {
  /* height:9px;width:8px; */
  /* border-image:url(:/images/a/4.png); */
  subcontrol-position: bottom;
}

/* 滑块左面区域样式 */
QScrollBar::sub-page:horizontal {
  background: rgb(117, 196, 13);
  border: 2px solid rgb(223, 104, 104);
}

/* 滑块右面区域样式 */
QScrollBar::add-page:horizontal {
  background: rgba(255, 102, 11);
  border: 2px solid rgb(223, 104, 104);
}

QScrollArea qss样式美化

/* QScrollArea {
  border: none;
  background: none;
} */

/* 整个垂直滚动条区域样式 */
QScrollBar:vertical {
  border: none;
  background: rgb(30, 30, 30);
  width: 10px;
  margin: 0px 0 0px 0;
}

/* 整个水平滚动条区域样式 */
QScrollBar:horizontal {
  border: none;
  background: rgb(30, 30, 30);
  height: 10px;
  margin: 0px 0 0px 0;
}

/* 滑块区域样式 */
QScrollBar::handle:vertical {
  background: rgb(66, 66, 66);
  min-height: 20px;
  border-radius: 5px;
  border: none;
  /* margin: 0 1px 0 1px; */
}

QScrollBar::handle:horizontal {
  background: rgb(66, 66, 66);
  min-height: 20px;
  border-radius: 5px;
  border: none;
}

/* 鼠标滑过滑块样式 */
QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed {
  background: rgb(79, 79, 79);
  /* margin: 0 0 0 0; */
}

QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed {
  background: rgb(79, 79, 79);
}

/* 向下箭头样式 */
QScrollBar::add-line:vertical {
  border: none;
  background: none;
  height: 0px;
  subcontrol-position: bottom;
  subcontrol-origin: margin;
}

/* 向右箭头样式 */
QScrollBar::add-line:horizontal {
  border: none;
  background: none;
  height: 0px;
  subcontrol-position: bottom;
  subcontrol-origin: margin;
}

/* 向上箭头样式 */
QScrollBar::sub-line:vertical {
  border: none;
  background: none;
  height: 0px;
  subcontrol-position: top;
  subcontrol-origin: margin;
}

/* 向左箭头样式 */
QScrollBar::sub-line:horizontal {
  border: none;
  background: none;
  height: 0px;
  subcontrol-position: top;
  subcontrol-origin: margin;
}

/* 滚动条上面和下面区域样式 */
QScrollBar::sub-page:vertical,
QScrollBar::add-page:vertical {
  background: none;
  width: 0px;
  height: 0px;
}

/* 滚动条左面和右面区域样式 */
QScrollBar::sub-page:horizontal,
QScrollBar::add-page:horizontal {
  background: none;
  width: 0px;
  height: 0px;
}


重写QScrollArea实现QScrollArea获得焦点时qscrollbar才显示,使用时将QScrollArea提升为自定义的QScrollArea。

#pragma once
#include <QtWidgets>

class MyQScrollArea : public QScrollArea
{
  Q_OBJECT
private:
protected:
  void enterEvent(QEvent *event) override;
  void leaveEvent(QEvent *event) override;

public:
  MyQScrollArea(QWidget *parent = nullptr);
  ~MyQScrollArea();
};


#include "myqscrollarea.h"

MyQScrollArea::MyQScrollArea(QWidget *parent) : QScrollArea(parent)
{
  // setMouseTracking(true);
  verticalScrollBar()->hide();
  horizontalScrollBar()->hide();
}

MyQScrollArea::~MyQScrollArea()
{
}

void MyQScrollArea::enterEvent(QEvent *event)
{
  verticalScrollBar()->show();
  horizontalScrollBar()->show();
  QAbstractScrollArea::enterEvent(event);
}
void MyQScrollArea::leaveEvent(QEvent *event)
{
  verticalScrollBar()->hide();
  horizontalScrollBar()->hide();
  QAbstractScrollArea::leaveEvent(event);
}

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

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

相关文章

Pikachu靶场——文件包含漏洞(File Inclusion)

文章目录 1. File Inclusion1.2 File Inclusion(local)1.2.1 源代码分析1.2.2 漏洞防御 1.3 File Inclusion(remote)1.3.1 源代码分析1.3.2 漏洞防御 1.4 文件包含漏洞防御 1. File Inclusion 还可以参考我的另一篇文章&#xff1a;文件包含漏洞及漏洞复现。 File Inclusion(…

商业智能系统的主要功能包括数据仓库、数据ETL、数据统计输出、分析功能

ETL服务内容包含&#xff1a; 数据迁移数据合并数据同步数据交换数据联邦数据仓库

plt 画图不显示label

没写 plt.legend() 这个 ! # 效果模拟-------------- import matplotlib.pyplot as plt import matplotlib as mpl # matplotlib其实是不支持显示中文的 显示中文需要一行代码设置字体 mpl.rcParams[font.family] = STKAITI # STKAITI——字体 plt.rcParams[axes.unicode_m…

亲,您的假期余额已经严重不足了......

引言 大家好&#xff0c;我是亿元程序员&#xff0c;一位有着8年游戏行业经验的主程。 转眼八天长假已经接近尾声了&#xff0c;今天来总结一下大家的假期&#xff0c;聊一聊假期关于学习的看法&#xff0c;并预估一下大家节后大家上班时的样子。 1.放假前一天 即将迎来八天…

侯捷 C++ STL标准库和泛型编程 —— 9 STL周围

最后一篇&#xff0c;完结辽&#xff01;&#x1f60b; 9 STL周围 9.1 万用Hash Function Hash Function的常规写法&#xff1a;其中 hash_val 就是万用Hash Function class CustumerHash { public:size_t operator()(const Customer& c) const{ return hash_val(c.fna…

x64内核实验2-段机制的变化

x64内核实验2-段机制的变化 ia-32e模式简介 x86下的段描述符结构图如下 在x86环境下段描述符主要分为3个部分的内容&#xff1a;base、limit、attribute&#xff0c;而到了64位环境下段的限制越来越少&#xff0c;主要体现在base和limit已经不再使用而是直接置空&#xff0…

U盘里文件损坏无法打开怎么恢复?

U盘&#xff0c;全称为USB闪存盘&#xff0c;是一种体积小巧、传输数据速度快的便携式存储设备。由于其出色的便捷性和高效性&#xff0c;U盘在各个工作领域和日常生活中得到了广泛应用&#xff0c;赢得了消费者的普遍好评。然而&#xff0c;使用U盘的过程中也可能会面临数据损…

Zabbix配置监控文件系统可用空间小于30GB自动告警

一、创建监控项 二、配置监控项 #输入名称–>键值点击选择 #找到磁盘容量点击 注&#xff1a; 1、vfs 该键值用于检测磁盘剩余空间&#xff0c;zabbix 内置了非常多的键值可以选着使用 2、单位B不需要修改&#xff0c;后期图表中单位和G拼接起来就是GB 3、更新时间 10S…

Qt扫盲-QSqlTableModel理论总结

QSqlTableModel理论总结 一、概述二、使用1. 与 view 视图绑定2. 做中间层&#xff0c;不显示 三、常用函数 一、概述 QSqlTableModel是用于从单个表读写数据库记录的高级接口。它构建在较低级的QSqlQuery之上&#xff0c;可用于向QTableView 等视图类提供数据。这个主要是对单…

基于三平面映射的地形纹理化【Triplanar Mapping】

你可能遇到过这样的地形&#xff1a;悬崖陡峭的一侧的纹理拉伸得如此之大&#xff0c;以至于看起来不切实际。 也许你有一个程序化生成的世界&#xff0c;你无法对其进行 UV 展开和纹理处理。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 三平面映射&#xff08;Trip…

【C++】String -- 详解

⚪C语言中的字符串 C 语言中&#xff0c;字符串是以 \0 结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C 标准库中提供了一些 str 系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合 OOP 的思想&#xff0c;而且底层空间需要用户自己…

Java实现整数互转罗马数字基本算法

目录 一、罗马数字的起源&#xff1f; 二、算法代码 &#xff08;1&#xff09;整数转罗马数字算法代码 &#xff08;2&#xff09;罗马数字转整数算法代码 三、测试结果 &#xff08;1&#xff09;整数转罗马数字测试结果 &#xff08;2&#xff09;罗马数字转整数测试…

GD32F103 硬件 IIC

1. 硬件IIC 1. 硬件IIC的框图 如果MCU做为主机SCL就做为输出&#xff0c;做从机SCL就做为输入。 主机&#xff1a; 当MCU作为主机发送数据流程从数据缓冲寄存器里拿到移位寄存器。在从移位寄存器一位一位发送。 当MCU作为主机接收数据流程先放到移位寄存器。在从移位寄存…

微信小程序软件著作权申请成功!

软件著作权登记是对自己开发的软件享有著作权的一种保障&#xff0c;也是对自己开发能力的一种认证&#xff0c;在个人找工作或者公司拿项目资质审查时都可能发挥作用。我成功开发了一款微信小程序后&#xff0c;便了解了许多相关资料&#xff0c;花钱请代理代办速度快、省事&a…

Visopsys 0.92 发布

Visopsys 是一个 PC 机的操作系统&#xff0c;系统小型、快速而且开源。有着丰富的图形界面、抢先式多任务机制以及支持虚拟内存。Visopsys 视图兼容很多操作系统&#xff0c;但并不是他们的克隆版本。Visopsys 0.92 现已发布&#xff0c;此维护版本引入了多任务处理程序、文件…

C++标准模板(STL)- 类型支持 (定宽整数类型)(int8_t,int_fast8_t,int_least8_t,intmax_t,intptr_t)

定宽整数类型 类型 定义于头文件 <cstdint> int8_tint16_tint32_tint64_t (可选) 分别为宽度恰为 8、16、32 和 64 位的有符号整数类型 无填充位并对负值使用补码 &#xff08;仅若实现支持该类型才提供&#xff09; (typedef) int_fast8_tint_fast16_tint_fast32_tint…

进程调度算法之先来先服务(FCFS),短作业优先(SJF)以及高响应比优先(HRRN)

1.先来先服务&#xff08;FCFS&#xff09; first come first service 1.算法思想 主要从“公平”的角度考虑(类似于我们生活中排队买东西的例子) 2.算法规则 按照作业/进程到达的先后顺序进行服务。 3.用于作业/进程调度 用于作业调度时&#xff0c;考虑的是哪个作业先…

Spring 原理

它是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 1 Spring 特点 轻量级控制反转面向切面容器框架集合 2 Spring 核心组件 3 Spring 常用模块 4 Spring 主要包 5 Spring 常用注解 bean…

【HTTP】URL结构、HTTP请求和响应的报文格式、HTTP请求的方法、常见的状态码、GET和POST有什么区别、Cookie、Session等重点知识汇总

目录 URL格式 HTTP请求和响应报文的字段&#xff1f; HTTP请求方法 常见的状态码 GET 和 POST 的区别 Cookie 和 Session URL格式 &#xff1f;&#xff1a;是用来分割URL的主体部分&#xff08;通常是路径&#xff09;和查询字符串&#xff08;query string&#xff09;…

MyBatisPlus(九)模糊查询

说明 模糊查询&#xff0c;对应SQL语句中的 like 语句&#xff0c;模糊匹配“要查询的内容”。 like /*** 查询用户列表&#xff0c; 查询条件&#xff1a;姓名包含 "J"*/Testvoid like() {String name "J";LambdaQueryWrapper<User> wrapper ne…