Qml练习:进度圆环绘制

本文通过Qml详细介绍了如何创建一个进度圆环,涵盖了从基础元素设置到动态更新进度值的过程,帮助读者掌握Qml在图形界面设计上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

import QtQuick 2.9
import QtQuick.Window 2.9

Item {
    id: root
    width: 400
    height: 400

    Rectangle{
        id:rect
        width: 300
        height: width
        radius: width/2
        property int value:30  //取值0-100
        antialiasing: true
        anchors.centerIn: parent
        color: "gray"
        Text {
            id: ratio
            text: String("%1%").arg(rect.value)
            font{
                pointSize: 30
                family: "黑体"
            }
            color: "white"
            anchors.centerIn: parent
        }
        Canvas{
            id:canvas
            antialiasing: true
            anchors.fill: parent
            onPaint: {
                var ctx = getContext("2d")
                
                //绘图之前清除画布
                ctx.clearRect(0,0,width,height)

                ctx.strokeStyle = "aquamarine"
                ctx.lineWidth = 12
                ctx.beginPath()
                ctx.arc(rect.width/2,rect.height/2,rect.width/2-ctx.lineWidth,-Math.PI/2,-Math.PI/2+rect.value/100*2*Math.PI )
                ctx.stroke()

            }
        }

        focus: true
        Keys.onPressed: {
            switch(event.key)
            {
            case Qt.Key_Up:         //按方向键上,数值增加
                 if(rect.value<100)
                     rect.value+=5

                 break
            case Qt.Key_Down:     //按方向键下,数值减小
                if(rect.value>0)
                    rect.value-=5
                break

            }
            
			//重绘
            canvas.requestPaint()

        }
    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值