QSS之QScrollArea

news2024/11/28 11:32:30

 

QScrollArea在实际的开发过程中经常使用,主要是有些界面一屏显示不下,所以得用QScorllArea带滚动条拖动显示剩余的界面。默认的QScrollArea滚动条不满设计的风格,因此我们必须设置自已的滚动条风格,QScrollBar分为水平horizontal和垂直vertical,在设置的过程中常见的属性如下:

首先看垂直滚动条属性:

属性意思
QScrollBar:vertical垂直滚动条整体背景风格
QScrollBar::handle:vertical垂直滚动条滑动块风格
QScrollBar::add-line:vertical垂直滚动条底部添加一个按钮
QScrollBar::sub-line:vertical垂直滚动条覆盖顶部的按钮
QScrollBar:up-arrow:vertical垂直滚动条顶边按钮上的箭头
QScrollBar:down-arrow:vertical垂直滚动条底部按钮上的箭头
QScrollBar::add-page:vertical垂直滚动条滑动块下边区域的风格
QScrollBar::sub-page:vertical垂直滚动条滑动块上边区域的风格

水平滚动条属性

下面看具体的代码示例:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void initView();
    void initData();


private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPalette>
#include <QScrollArea>
#include <QScrollBar>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->resize(1000, 500);
    initView();
    initData();
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::initView()
{
    //给父窗体填充颜色
    QPalette palette = ui->scrollAreaWidgetContents->palette();
    palette.setBrush(QPalette::Window, QBrush(QColor(0, 0, 60)));
    ui->scrollAreaWidgetContents->setAutoFillBackground(true);
    ui->scrollAreaWidgetContents->setPalette(palette);
    QPalette palette2 = ui->scrollAreaWidgetContents_2->palette();
    palette2.setBrush(QPalette::Window, QBrush(QColor(0, 60, 0)));
    ui->scrollAreaWidgetContents_2->setAutoFillBackground(true);
    ui->scrollAreaWidgetContents_2->setPalette(palette2);
    QPalette palette3 = ui->scrollAreaWidgetContents_3->palette();
    palette3.setBrush(QPalette::Window, QBrush(QColor(60, 0, 0)));
    ui->scrollAreaWidgetContents_3->setAutoFillBackground(true);
    ui->scrollAreaWidgetContents_3->setPalette(palette3);
    QPalette palette4 = ui->scrollAreaWidgetContents_4->palette();
    palette4.setBrush(QPalette::Window, QBrush(QColor(60, 60, 0)));
    ui->scrollAreaWidgetContents_4->setAutoFillBackground(true);
    ui->scrollAreaWidgetContents_4->setPalette(palette4);
    //这里注意,要比主窗体的尺寸要大,不然太小的话会留下一片空白
    ui->scrollAreaWidgetContents->setMinimumSize(1500, 1000);
    ui->scrollAreaWidgetContents_2->setMinimumSize(1500, 1000);
    ui->scrollAreaWidgetContents_3->setMinimumSize(1500, 1000);
    ui->scrollAreaWidgetContents_4->setMinimumSize(1500, 1000);
    ui->scrollAreaWidgetContents_5->setMinimumSize(1500, 1000);
}

void MainWindow::initData()
{
    //水平滚动条风格 边距顺序margin: top right bottom left
    QString horizontalStyle = QString(
                "QScrollBar:horizontal{border:2px solid grey;background:#32CC99;height:15px;margin:0px 20px 0px 20px;}"                                     //滚动条底部背景风格
                "QScrollBar::handle:horizontal{background:yellow; min-width:20px;}"                                                                         //滑动块风格
                "QScrollBar::add-line:horizontal{border:2px solid red;background:#325599;width:20px;subcontrol-position:right;subcontrol-origin:margin;}"   //右边添加一个按钮
                "QScrollBar::sub-line:horizontal{border:2px solid blue;background:#003290;width:20px;subcontrol-position:left;subcontrol-origin:margin;}"   //覆盖左边的按钮
                "QScrollBar:left-arrow:horizontal{border:2px solid green; width 3px; height 3px; background: white;}"                                       //左边按钮上的箭头
                "QScrollBar:right-arrow:horizontal{border:2px solid green; width 3px; height 3px; background: white;}"                                      //右边按钮上的箭头
                "QScrollBar::add-page:horizontal{background:gray;}"                                                                                         //滑动块右边区域的风格
                "QScrollBar::sub-page:horizontal{background:cyan;}"                                                                                         //滑动块左边区域的风格
                );
    ui->scrollArea->horizontalScrollBar()->setStyleSheet(horizontalStyle);
    QString horizontalStyle2 = QString(
                "QScrollBar:horizontal{border:2px solid grey;background:#32CC99;height:15px;margin:0px 20px 0px 20px;}"                                     //滚动条底部背景风格
                "QScrollBar::handle:horizontal{background:yellow; min-width:20px;}"                                                                         //滑动块风格
                "QScrollBar::add-line:horizontal{border:2px solid red;background:#325599;width:20px;subcontrol-position:right;subcontrol-origin:margin;}"   //右边添加一个按钮
                "QScrollBar::sub-line:horizontal{border:2px solid blue;background:#003290;width:20px;subcontrol-position:left;subcontrol-origin:margin;}"   //覆盖左边的按钮
                "QScrollBar:left-arrow:horizontal{border:none; background: none;color:none;}"  //隐藏左边的箭头                                     //左边按钮上的箭头
                "QScrollBar:right-arrow:horizontal{border:none; background: none;color:none;}"  //隐藏右边的箭头                                    //右边按钮上的箭头
                "QScrollBar::add-page:horizontal{background:gray;}"                                                                                         //滑动块右边区域的风格
                "QScrollBar::sub-page:horizontal{background:cyan;}"                                                                                         //滑动块左边区域的风格
                );

    ui->scrollArea_2->horizontalScrollBar()->setStyleSheet(horizontalStyle2);

    //设置滑动块圆角时,border-radius的值要小于height的二分之一才有效果
    QString horizontalStyle3 = QString(
                "QScrollBar:horizontal{background:white;height:8px;}"           //滚动条底部背景风格
                "QScrollBar::handle:horizontal{background:#AAAAAA;min-width:20px;height:4px;border-radius:2px;margin:2px 0px 2px 0px;}"
                "QScrollBar::handle:horizontal:hover{background:#999999;height:8px;border-radius:3px;margin:0px;}"
                "QScrollBar::add-line:horizontal{width:0;height:0;}"            //隐藏左端的按钮                                                                                       //滑动块右边区域的风格
                "QScrollBar::sub-line:horizontal{width:0;height:0;}"            //隐藏右端的按钮                                                                                       //滑动块左边区域的风格
                );

    ui->scrollArea_3->horizontalScrollBar()->setStyleSheet(horizontalStyle3);


    //垂直滚动条风格
    QString verticalStyle = QString(
                "QScrollBar:vertical{border:2px solid grey;background:#32CC99;width:15px;margin:22px 0 22px 0;}"                                            //滚动条底部背景风格
                "QScrollBar::handle:vertical{background:yellow; min-height:20px;}"                                                                          //滑动块风格
                "QScrollBar::add-line:vertical{border:2px solid red;background:#325599;height:20px;subcontrol-position:bottom;subcontrol-origin:margin;}"   //底部添加一个按钮
                "QScrollBar::sub-line:vertical{border:2px solid blue;background:#003290;height:20px;subcontrol-position:top;subcontrol-origin:margin;}"     //覆盖顶部的按钮
                "QScrollBar:up-arrow:vertical{border:2px solid green; width 3px; height 3px; background: white;}"                                           //上边按钮上的箭头
                "QScrollBar:down-arrow:vertical{border:2px solid green; width 3px; height 3px; background: white;}"                                         //下边按钮上的箭头
                "QScrollBar::add-page:vertical{background:gray;}"                                                                                           //滑动块下边区域的风格
                "QScrollBar::sub-page:vertical{background:cyan;}"                                                                                           //滑动块上边区域的风格
                );
    ui->scrollArea->verticalScrollBar()->setStyleSheet(verticalStyle);

    QString verticalStyle2 = QString(
                "QScrollBar:vertical{border:2px solid grey;background:#32CC99;width:15px;margin:22px 0 22px 0;}"                                            //滚动条底部背景风格
                "QScrollBar::handle:vertical{background:yellow; min-height:20px;}"                                                                          //滑动块风格
                "QScrollBar::add-line:vertical{border:2px solid red;background:#325599;height:20px;subcontrol-position:bottom;subcontrol-origin:margin;}"   //底部添加一个按钮
                "QScrollBar::sub-line:vertical{border:2px solid blue;background:#003290;height:20px;subcontrol-position:top;subcontrol-origin:margin;}"     //覆盖顶部的按钮
                "QScrollBar:up-arrow:vertical{border:2px solid green; width 3px; height 3px; background: white;}"                                           //上边按钮上的箭头
                "QScrollBar:down-arrow:vertical{border:2px solid green; width 3px; height 3px; background: white;}"                                         //下边按钮上的箭头
                "QScrollBar::add-page:vertical{background:gray;}"                                                                                           //滑动块下边区域的风格
                "QScrollBar::sub-page:vertical{background:cyan;}"                                                                                           //滑动块上边区域的风格
                );
    ui->scrollArea_2->verticalScrollBar()->setStyleSheet(verticalStyle2);

    //设置滑动块圆角时,border-radius的值要小于width的二分之一才有效果
    QString verticalStyle3 = QString(
                "QScrollBar:vertical{background:white;width:8px;}"              //滚动条底部背景风格
                "QScrollBar::handle:vertical{background:#AAAAAA;min-height:20px;width:4px;border-radius:2px;margin:0px 2px 0px 2px;}"
                "QScrollBar::handle:vertical:hover{background:#999999;width:8px;border-radius:3px;margin:0px;}"
                "QScrollBar::add-line:vertical{width:0;height:0;}"              //隐藏左端的按钮                                                                                       //滑动块右边区域的风格
                "QScrollBar::sub-line:vertical{width:0;height:0;}"              //隐藏右端的按钮                                                                                       //滑动块左边区域的风格
                );
    ui->scrollArea_3->verticalScrollBar()->setStyleSheet(verticalStyle3);       //设置滚动条属性
    ui->scrollArea_3->setStyleSheet("QScrollArea{background-color:white;border:0px solid white;}");//设置QScrollArea边框属性
    
}

运行结果:

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

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

相关文章

if条件分支计算分段函数

分别罗列x的值域区间&#xff0c;if条件跳转相应分支计算函数值。 (本笔记适合正在研学if条件分支语句的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c…

Adams齿轮副

1.运动副 添加旋转副的时候&#xff0c;必须先物体后公共part(即此处的ground&#xff09;&#xff0c;最后再选择质心点 2.啮合点 啮合点marker的z轴必须是齿轮分度圆的切线方向 3.啮合点 两齿轮的旋转副&#xff0c;和啮合点&#xff0c;即cv marker &#xff0c;必须属…

解决Nacos配置刷新问题: 如何启用配置刷新功能以及与`@RefreshScope`注解的关联问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

《HelloGitHub》第 90 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

轻量自高斯注意力(LSGA)机制

light&#xff08;轻量&#xff09;Self-Gaussian-Attention vision transformer&#xff08;高斯自注意力视觉transformer&#xff09; for hyperspectral image classification&#xff08;高光谱图像分类&#xff09; 论文&#xff1a;Light Self-Gaussian-Attention Vision…

第7讲:VBA中利用FIND的代码实现单值查找实例

【分享成果&#xff0c;随喜正能量】心真如&#xff0c;随缘生起一切法&#xff0c;一切法还归于真如。《大乘起信论》讲心真如门就是体&#xff0c;心生灭门就是相用&#xff0c;心生灭、心真如都从一心而起&#xff0c;离开心别无二法。我们想从心真如门修行不易进入&#xf…

leetCode 123.买卖股票的最佳时机 III 动态规划 + 状态压缩

123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09; 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff0…

【Linux系统编程】进程状态

文章目录 前言1. 准备工作2. 阻塞、挂起状态的了解2.1 阻塞2.2 挂起 3. 看看Linux内核源代码怎么说4. R运行状态&#xff08;running&#xff09;5. S休眠状态&#xff08;sleeping)6. D不可中断休眠状态7. T暂停状态&#xff08;stopped&#xff09;8. t 追踪暂停状态 (tracin…

MySQL学习笔记26

MySQL主从复制的搭建&#xff08;AB复制&#xff09; 传统AB复制架构&#xff08;M-S)&#xff1a; 说明&#xff1a;在配置MySQL主从架构时&#xff0c;必须保证数据库的版本高度一致&#xff0c;统一版本为5.7.31 环境规划&#xff1a; 编号主机名称主机IP地址角色信息1ma…

C/C++跨平台构建工具CMake-----在C++源码中读取CMakeLists.txt配置文件中的内容

文章目录 1.需求描述2.需求准备2.1 创建项目2.2 编辑CMakeLists.txt文件2.3 编写C文件2.4 编译构建项目 3.需求实现3.1 在CMakeLists.txt中输出日志信息3.2 增加配置生成C头文件3.3在C 源码中访问配置的值3.4 C文件中读取CMakeLists.txt中的字符串 总结 1.需求描述 当我们开发…

C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)

前言&#xff1a;排序作为数据结构中的一个重要模块&#xff0c;重要性不言而寓&#xff0c;我们的讲法为下理论掌握大致的算法结构&#xff0c;再上代码及代码讲解&#xff0c;助你一臂之力。 一&#xff0c;冒泡 冒泡排序应该是大家学习以来第一个认识的排序方法&#xff0…

FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍

FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍FFmpeg 简介FFmpeg 基础知识复用与解复用编解码器码率和帧率 资料 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 本系列文章要解决的问题&#xff1…

2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题

2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题 模块一&#xff1a;数据库系统运维&#xff08;25分&#xff09;任务一&#xff1a;数据库系统搭建&#xff08;10分&#xff09;任务二&#xff1a;房源数据库系统运维&#xff08;15分&#xff09; 模块二&a…

milvus 结合Thowee 文本转向量 ,新建表,存储,搜索,删除

1.向量数据库科普 【上集】向量数据库技术鉴赏 【下集】向量数据库技术鉴赏 milvus连接 from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility connections.connect(host124.****, port19530)2.milvus Thowee 文本转向量 使用 …

模拟实现简单的通讯录

前言&#xff1a;生活中处处都会看到或是用到通讯录&#xff0c;今天我们就通过C语言来简单的模拟实现一下通讯录。 鸡汤&#xff1a;跨越山海&#xff0c;终见曙光&#xff01; 链接:gitee仓库&#xff1a;代码链接 目录 主函数声明部分初始化通讯录实现扩容的函数增加通讯录所…

【Docker】docker拉取镜像错误 missing signature key

问题 当我使用docker拉取一个特定的镜像时&#xff0c;提示错误&#xff1a; 错误 missing signature key 但是拉取其他镜像又可以访问&#xff0c;&#xff0c;&#xff0c;&#xff0c;于是&#xff0c;我怀疑是否是docker版本问题。 docker --version结果确实&#xff0…

使用Python进行App用户细分

App用户细分是根据用户与App的互动方式对用户进行分组的任务。它有助于找到保留用户&#xff0c;找到营销活动的用户群&#xff0c;并解决许多其他需要基于相似特征搜索用户的业务问题。这篇文章中&#xff0c;将带你完成使用Python进行机器学习的App用户细分任务。 App用户细…

FFmpeg 命令:从入门到精通 | FFmpeg 音视频处理流程

FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 音视频处理流程 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 音视频处理流程实例 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 音视频处理流程 实例 ffmpeg -i test_1920x1080.mp4 -acodec copy -vcodec libx264 -s 1280x…

ElasticSearch 同步数据变少了

一、前言 这几天对接ES遇到几个坑&#xff0c;我们将一张库存表同步到ES发现Docs Count和我们表中的数据对不上&#xff0c;需要加上Docs deleted才对得上&#xff0c;也不知道批量写入数据为什么有些数据就会成 Docs deleted。 二、ID和版本号 ES中每一个Document都有一个_…

ElementUI之增删改及表单验证

⭐⭐本文章收录与ElementUI原创专栏&#xff1a;ElementUI专栏 ⭐⭐ ElementUI的官网&#xff1a;ElementUI官网 目录 一.前言 二.使用ElementUI完成增删改 2.1 后台代码 2.2 前端代码 三.使用ElementUI完成表单验证 一.前言 本章是继上一篇的基础之上在做完善&#xff0…