QML 实现3D进度条(伪3D)

31 篇文章 10 订阅

利用qml的DropShadow实现的3D效果的进度条
这里写图片描述

源码如下
核心代码ProcessBar.qml

import QtQuick 2.6
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0


Rectangle{
  id : rootrect
  x: 20; y :50
  width: 400;height: 100
  color: "black"
  radius: 5
  property int curvalue: 1
  property color bgcolor: "#8AC21F"
  property color shadowcolor: "#5F891A"

  Text {
      id: valuetext
      anchors.centerIn : probar
      text: curvalue
      font.pixelSize : probar.height/2
      z : 1
  }

  Rectangle{
      id : probar
      x: 8 ; y:-5
      width: curvalue/100*parent.width ;height: parent.height-5
      color: bgcolor
      radius: 5
  }
  DropShadow {
      anchors.fill: probar
      horizontalOffset: -3
      verticalOffset: 5
      radius: 10.0
      samples: 50
      spread: 0.5
      color :  shadowcolor//"#5F891A"//
      source: probar
  }
}

使用如下
main.qml

import QtQuick 2.6
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0
import QtQuick.Controls 2.2

Window {
   visible: true
    width: 640
    height:600


    Slider {
        from: 1
        value: 25
        to: 100
        onValueChanged: {bar.curvalue= value;bar2.curvalue= value;bar3.curvalue= value;}
    }
    ProcessBar{
        id: bar

    }
    ProcessBar{
        id: bar2
        y : bar.height+100
        bgcolor: "#27C9D1"
        shadowcolor: "#1B84A1"
        curvalue: 60

    }
    ProcessBar{
        id: bar3
         y : bar.height*2+200
         bgcolor: "#DE6E6D"
         shadowcolor: "#BD2B2C"
         curvalue: 60
    }

}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值