当前位置: 首页 > article >正文

使用QML实现播放器进度条效果

使用QML实现播放进度效果

QML Slider介绍

直接上DEMO如下:

        Slider {
            width: 300;
            height: 20;
            orientation: Qt.Vertical; //决定slider是横还是竖 默认是Horizontal
            stepSize: 0.1;
            value: 0.2;
            tickmarksEnabled: true; //显示刻度
        }

效果图如下
在这里插入图片描述
那么我先改变滑块跟滚轮那就需要SliderStyle了

SliderStyle

SliderStyle由四部分组成分别是面板(panel)、滑槽(groove)、刻度线(tickmarks)、滑块(handle)通常情况下我们只需要改动groove、handle就可以获取我们想要的效果

播放器进度条需求分析

1.滑块随播放进度而偏移
2.滑块滑动过的位置为已播放的内容,已播放内容对应的滑槽部分背景色应该不同
3.滑块可以定制化
4.slider应该随着播放器界面大小改变来改动

DEMO

1.先来看看滑块自定义

            handle: Rectangle {
                // 滑块
                implicitWidth: 16 // 滑块宽度,当没有定义width时生效
                anchors.centerIn: parent
                color: control.pressed ? "white" : "lightgray" //鼠标移动到滑块上边缘颜色改变
                border.color: "gray"
                border.width: 2
                width: 34
                height: 34
                radius: 12
                Text { //滑块中间显示value
                    anchors.centerIn: parent
                    text: control.value
                    color: "red"
                }
                AnimatedImage {  //加载git图片,此使滑块样式为加载图片样式
                    source: "huli.gif"
                    anchors.fill: parent
                    playing: true
                }
            }

2.滑槽自定义

            groove: Item {
                implicitWidth: 200
                implicitHeight: 8
                Rectangle {
                    id: grooveBackground
                    anchors.fill: parent
                    color: "gray"
                    radius: 8
                }
                // 该部分来实现已播放进度条背景色功能
                Rectangle {
                    id: highlight
                    height: parent.height
                    width: playerProcessBar.value / playerProcessBar.maximumValue
                           * playerProcessBar.width    
                    color: "green" // 高亮颜色
                    radius: 8
                }
            }
            ```

http://www.kler.cn/a/450656.html

相关文章:

  • 专栏二十三:Python读取和分析空间数据的经验杂谈
  • 基于SSM(Spring + Spring MVC + MyBatis)框架搭建一个病人跟踪信息管理系统
  • 深入解析:Python中的决策树与随机森林
  • VMware vCenter保姆级安装部署(VMware VCenter Nanny Level Installation and Deployment)
  • 图像处理-Ch6-彩色图像处理
  • HTML基础学习(1)
  • spring mvcservlet跳转页面没有样式效果
  • ubuntu安装nginx
  • leetcode之hot100---24两两交换链表中的节点(C++)
  • Ubuntu离线安装Docker容器
  • vscode添加全局宏定义
  • 青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
  • AI如何进行风险控制:深度解析与实战应用
  • 开源模型应用落地-LlamaIndex学习之旅-Agents-用自然语言构建Agent(一)
  • Linux -- 线程的优点、pthread 线程库
  • 南海区2021年C++甲组真题第3题——Excel地址
  • 【C# 联合halcon实现绘制箭头】
  • 【C语言】`free` 函数详细讲解
  • 如何在谷歌浏览器中设置邮件客户端
  • OSError: [Errno 98] Address already in use pycharm 远程
  • 重温设计模式--迭代器模式
  • Python项目之Pygame制作新年烟花!
  • 【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
  • Vue 3 和 Vue Router 使用 createWebHistory 配置
  • WebGL 项目外包开发流程
  • 告别卡顿:CasaOS轻NAS设备安装Gopeed打造高效下载环境