QML自定义滑动条Slider的样式

代码展示

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.1Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Slider {id: controlvalue: 0.5background: Rectangle {x: control.leftPaddingy: control.topPadding + control.availableHeight / 2 - height / 2implicitWidth: 200implicitHeight: 4width: control.availableWidthheight: implicitHeightradius: 2color: "#bdbebf"Rectangle {width: control.visualPosition * parent.widthheight: parent.heightcolor: "#1a95f3"radius: 2}}handle: Rectangle {x: control.leftPadding + control.visualPosition * (control.availableWidth - width)y: control.topPadding + control.availableHeight / 2 - height / 2implicitWidth: 26implicitHeight: 26radius: 13color: control.pressed ? "#167dcb" : "#1a95f3"border.color: "#bdbebf"}}}

运行效果展示

代码说明

这段QML代码定义了一个包含自定义滑动条(Slider)的窗口(Window)。下面是对关键代码部分的解释:

  1. Slider:
    • id: control:为滑动条分配一个ID,以便在QML的其他部分引用它。
    • value: 0.5:设置滑动条的初始值。这个值介于0和1之间,表示滑动条当前位置相对于其总长度的比例。
  2. background:
    • background属性定义了滑动条的背景。
    • 在这里,background是一个Rectangle,它作为滑动条的轨道。
    • implicitWidth: 200 和 implicitHeight: 4:设置背景矩形的隐式宽度和高度。隐式宽度是建议的宽度,而实际宽度可能会受到父元素布局的影响。隐式高度决定了轨道的厚度。
    • width: control.availableWidth:设置背景矩形的实际宽度为滑动条可用宽度。
    • height: implicitHeight:设置背景矩形的高度为其隐式高度。
    • radius: 2:设置背景矩形的圆角半径。
    • color: "#bdbebf":设置背景矩形的颜色。
    • 内部的Rectangle表示滑动条当前值所对应的填充部分。它的宽度根据control.visualPosition(滑动条当前位置的比例)来计算,颜色为深蓝色(#1a95f3)。
  3. handle:
    • handle属性定义了滑动条的手柄。
    • 在这里,handle也是一个Rectangle,用户可以通过拖动它来改变滑动条的值。
    • x属性根据control.visualPosition和手柄的宽度来计算手柄的位置,确保手柄始终位于滑动条当前值所对应的位置上。
    • implicitWidth: 26 和 implicitHeight: 26:设置手柄的隐式宽度和高度。
    • radius: 13:设置手柄的圆角半径。
    • color属性根据手柄是否被按下(control.pressed)来改变颜色。如果被按下,颜色变为稍暗的蓝色(#167dcb);否则,保持为深蓝色(#1a95f3)。
    • border.color: "#bdbebf":设置手柄边框的颜色,与背景颜色相同,以便在视觉上融合。

注意

  • 在这个QML代码中,滑动条的backgroundhandle都是自定义的,这意味着它们不会继承Slider控件的默认样式。这种自定义方式提供了更大的灵活性,允许开发者根据需求调整控件的外观。
  • 滑动条的value属性表示其当前值,可以通过绑定到其他QML属性或JavaScript函数来响应滑动条的变化。
  • 滑动条的leftPaddingtopPaddingavailableWidthavailableHeight属性是由Slider控件内部计算的,用于确定控件的可用空间和内边距。这些属性在自定义backgroundhandle时非常有用,因为它们允许开发者根据滑动条的实际布局来调整元素的位置和大小。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【项目开发】C#环境配置及VScode运行C#教程(学生管理系统)

原创文章,禁止转载。 文章目录 下载.NETVScode配置运行程序下载.NET 官网链接: https://dotnet.microsoft.com/en-us/download选择任意版本下载: 下载完成后,双击运行exe文件,等待安装完成。 在控制台输入: dotnet --version若出现版本信息,说明安装成功: VScode配…

卡码网 ACM答题编程模板

背景: input() 在 ACM 编程中的底层调用原理 1. input() 的核心原理 在 Python 中,input() 的底层实现依赖于标准输入流 sys.stdin。每次调用 input() 时,Python 会从 sys.stdin 中读取一行字符串,直到遇到换行符 \n 或文件结束…

Linux驱动开发(18):linux驱动并发与竞态

并发是指多个执行单元同时、并行执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问 则很容易导致竞态。对于多核系统,很容易理解,由于多个CPU同时执行,多个CPU同时读、写共享资源时很容易造成竞态。…

k8s基础(3)—Kubernetes-Deployment

一、 Deployment概述 ‌ Kubernetes Deployment‌是Kubernetes中的一个核心概念,它是一种高级别的控制器,用于管理Pod和ReplicaSet,确保应用程序的高可用性和稳定性。Deployment通过声明式配置来创建和更新Pod和ReplicaSet,从而…

windows11(或centos7)安装nvidia显卡驱动、CUDA、cuDNN

本文是我瞎搞时写的问题汇总及参考文献,记录了一些问题解决的进度及对问题的思考。 最近一次更新时间:2025年1月4日 一、安装或更新nvidia显卡驱动 首先,需要确保你的设备安装了最新的显卡驱动。 (1)centos7安装显…

【光纤通信】光纤结构

光纤结构主要由折射率较高的纤芯(core)部分和折射率较低的包层(cladding)部分以及涂覆层(buffer coating)组成。 光纤的分类方法有很多种,如按纤芯折射率分布、按纤芯结构、按二次涂覆层结构、按…

急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击

僵尸网络活动增加 :新的“FICORA”和“CAPSAICIN”僵尸网络(Mirai 和 Kaiten 的变体)的活动激增。 被利用的漏洞 :攻击者利用已知的 D-Link 路由器漏洞(例如 CVE-2015-2051、CVE-2024-33112)来执行恶意命…

Eplan 项目结构(高层代号、安装地点、位置代号)

Eplan中的项目结构分为3个层次: (1)功能面结构。指明这个系统的功能,有什么用途。在EPlan中,指的就是"高层代号()"。 一般指的是线体。 (2)位置面结构。指明该…

网络安全之高防IP的实时监控精准防护

高防IP是一种网络安全设备,用于保护网络服务不受到各类攻击的影响,确保业务的持续稳定运行。它通过监控、识别和封锁恶意攻击流量,提供高级别的防护,降低业务被攻击的风险,并提升网络的稳定性和可靠性。 一、实时监控的…

RabbitMQ实现生产者消费者

一.启动MQ 注意管理员身份进入cmd才行,我这里是在本地安装的MQ,推荐使用虚拟机安装 二.思路 官方解释RabbitMQ结构: 自我理解RabbitMQ结构: 其实RabbitMQ的服务器就像邮局一样,我们的生产者和消费者对于这个服务器来说都是消费者,因为服务器都可以向两者发送消息 环境准备 …

【计算机视觉技术 - 人脸生成】2.GAN网络的构建和训练

GAN 是一种常用的优秀的图像生成模型。我们使用了支持条件生成的 cGAN。下面介绍简单 cGAN 模型的构建以及训练过程。 2.1 在 model 文件夹中新建 nets.py 文件 import torch import torch.nn as nn# 生成器类 class Generator(nn.Module):def __init__(self, nz100, nc3, n…

matlab中高精度计算函数vpa与非厄米矩阵本征值的求解

clear;clc;close all tic %并行设置% delete(gcp(nocreate));%关闭之前的并行 cparcluster(local); c.NumWorkers50;%手动设置线程数(否则默认最大线程为12) parpool(c, c.NumWorkers); %并行设置%w1; u2.5;N30;valstozeros(2*N2,100); v10linspace(-3,3,100).;parfor jj1:leng…

旧服务改造及微服务架构演进

旧服务改造及微服务架构演进 微服务架构演进1.微服务架构2.微服务架构的特点3.单体架构与微服务架构之间的对比4.微服务架构演进历程 旧服务改造1. 微服务拆分的一些通用原则2.微服务拆分策略(1)功能维度拆分策略(2)非功能维度拆分…

springmvc--请求参数的绑定

目录 一、创建项目,pom文件 二、web.xml 三、spring-mvc.xml 四、index.jsp 五、实体类 Address类 User类 六、UserController类 七、请求参数解决中文乱码 八、配置tomcat,然后启动tomcat 1. 2. 3. 4. 九、接收Map类型 1.直接接收Map类型 &#x…

Navicat 17 for Mac 数据库管理软件

Mac分享吧 文章目录 效果一、准备工作二、开始安装1. 双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕。2. 应用程序/启动台显示Navicat图标,表示安装成功。 二、运行测试运行后提示:“Navicat Premium.pp”已损坏&#x…

Lombok @Data无法 import 导入的问题解决办法

问题原因:Maven Pom中依赖的Lombok版本与安装在eclipse根目录下的Lombok版本不一致 解决办法:找到Maven Pom依赖版本的Lombok Jar包,执行命令:java -jar lombok-1.18.36.jar,运行如下图,然后安装即可。这样…

对计网大题的一些指正(中间介绍一下CDM的原理和应用)

目录 前言: (1)五层原理体系结构每层功能: 下面是文档的答案: 我在之前的博客里面有介绍过五层原理体系结构, 按理来说,第五层应该是应用层才对,而会话层的功能应该被放到应用层…

RISC-V学习笔记

1.RISC ISA1个基本整数指令集多个可选的扩展指令集,如RV32I表示支持32位整数指令集。I表示基本指令集,M表示整数乘法与除法指令集,A表示存储器原子指令集,F表示单精度浮点指令集,D表示双精度浮点指令集等,C…

SpringBoot入门之创建一个Hello World项目

文章目录 一、使用传统的方式1、创建一个SpringBoot项目2、配置pom.xml文件3、下载Maven依赖4、创建一个Controller类:com.devops.controller.HelloController5、创建一个引导类:com.devops.HelloApplication6、启动项目8、访问80809、完整项目结构 二、…

三、GIT与Github推送(上传)和克隆(下载)

GIT与Github推送(上传)和克隆(下载) 一、配置好SSH二、在Github创建仓库三、git克隆(下载)文件四、git推送(上传)文件到远程仓库 一、配置好SSH Git与Github上传和下载时需要使用到…