034-第三代软件开发-自定义Slider(一)

2023-10-29 06:20

本文主要是介绍034-第三代软件开发-自定义Slider(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

头图

第三代软件开发-自定义Slider(一)

文章目录

  • 第三代软件开发-自定义Slider(一)
    • 项目介绍
    • 自定义Slider(一)
    • 总结一下

关键字: QtQmlSliderposition关键字5

项目介绍

欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。

在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。

在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。

无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!

重要说明☝

☀该专栏在第三代软开发更新完将涨价

自定义Slider(一)

这部分代码是由我们的小伙伴开发,这里做一下分享,按照我的习惯我肯定是不会自己写一个的,我会去该Qt自带Slider 得样式,不过看代码,我们的小伙伴是自己实现了一个。后面我在写简单的视频播放器的时候,会有自定义Slider(二出现)。

小伙伴博客ID:https://blog.csdn.net/weixin_44641897?type=blog

import QtQuick 2.0
Item {id: root// 游标所在位置property int position: 5// 最多有多少刻度property int maxSchedule: 11// 显示字符串位置 -1左 0无 1右property int textLocation: 0// 字符串所占位置宽度  为 小于等于 0值 表示没有property int textWidth: 150// 字符穿内容 长度应该为刻度值+1property var textData: []// 刻度间隔property real spac: 4// 刻度条宽度(不含间隔)property int barWidth: 20// 刻度条宽度property int barWidthContain: barWidth + spacwidth: textLocation == 0 ? processBar.width+40 : processBar.width + textWidth +40height: 60Component.onCompleted: {//        console.log(textData.length)}// 背景图Image {id: backSlidersource: textLocation == -1 ? "qrc:/MainWindow/T_Resource/T_Image/MainWindow/Thyroid/Slider/bg_time.png" : "qrc:/MainWindow/T_Resource/T_Image/MainWindow/Thyroid/Slider/bg.png"anchors.centerIn: parentwidth: textLocation == 0 ? processBar.width+40 : processBar.width + textWidth +40//        anchors.margins: 20// 游标刻度显示Text {id: sliderText// 防止提供刻度值不够text: textData.length > position ? textData[position] : "null"width: textWidthheight: 20visible: textLocation == 0 || textWidth == 0 ? false : truecolor: "#D8D8D8"x: textLocation == -1 ? 20 : textLocation == 1 ? backSlider.width - textWidth  : 0y: backSlider.height / 2 - height / 2}// 进度条Image {id: processBarwidth: 8 + maxSchedule * barWidthContainheight: 10x: textLocation == 1 ? 20 : textLocation == -1 ? backSlider.width - processBar.width-20  : 20y: backSlider.height / 2 - height / 2source: "qrc:/MainWindow/T_Resource/T_Image/MainWindow/Thyroid/Slider/slider_bar.png"// 刻度ListView {id:listspacing:spacorientation: ListView.Horizontalwidth: processBar.widthheight: 10x: spacmodel: maxScheduleinteractive: falsedelegate: Rectangle{width: barWidthheight: 4y: processBar.height / 2 - height / 2color: index < position ? "#00B1FF" : "#53555C"}//点击进度条时实现快速快进快退MouseArea{anchors.fill: parentonClicked: {position = (mouseX+barWidthContain/2)/barWidthContainfor(var i=1;i<maxSchedule;i++){if(i < position){list.currentIndex = i   //点击选中哪一项list.currentItem.color = "#00B1FF"}else{list.currentIndex = i  //点击选中哪一项list.currentItem.color = "#53555C"}}}}// 游标Image {id: sliderRectsource: "qrc:/MainWindow/T_Resource/T_Image/MainWindow/Thyroid/Slider/pointer.png"x: position==0 ? 0-sliderRect.width/2 : position*barWidthContain - spac -sliderRect.width/2y: list.height / 2 - height / 2 +2MouseArea{anchors.fill: parentonMouseXChanged: {if(mouseX>barWidth+sliderRect.width/2){if(position < maxSchedule){list.currentIndex = position   //点击选中哪一项list.currentItem.color = "#00B1FF"position++}}if(mouseX<0){if(position > 1){list.currentIndex = position-1   //点击选中哪一项list.currentItem.color = "#53555C"position--}}}}}}}}
}

使用法子:

Turing_Slider{id:slider_voltageanchors.left: parent.leftanchors.bottom: parent.bottomvisible: falseposition: UserProfile.voltageRangemaxSchedule: 13textLocation: 1textWidth: 80textData: ["","20uV","50uV","100uV","200uV","500uV","1KuV","2KuV","5KuV","1WuV","2WuV","5WuV","10WuV","自适应"]onPositionChanged: {UserProfile.voltageRange = position;switch (position){case 1:set_voltageRange(20);playSound.play();breakcase 2:set_voltageRange(50);playSound.play();breakcase 3:set_voltageRange(100);playSound.play();breakcase 4:set_voltageRange(200);playSound.play();breakcase 5:set_voltageRange(500);playSound.play();breakcase 6:set_voltageRange(1000);playSound.play();breakcase 7:set_voltageRange(2000);playSound.play();breakcase 8:set_voltageRange(5000);playSound.play();breakcase 9:set_voltageRange(10000);playSound.play();breakcase 10:set_voltageRange(20000);playSound.play();breakcase 11:set_voltageRange(50000);playSound.play();breakcase 12:set_voltageRange(100000);playSound.play();breakcase 13:set_voltageRange(0);playSound.play();break}}

总结一下

这个Slider意义在于提供一个思路,而复用性应该没有太多,包括我们项目中,也没法复用,可以说是专门为了某一个功能定制的。参考参考


博客签名2021

这篇关于034-第三代软件开发-自定义Slider(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT