这篇文章主要介绍了如何使用Qt自定义控件实现圆圈加载进度条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
思路:画一个占270度的圆弧,然后定义一个定时器,定时旋转坐标系,实现旋转的效果。圆弧需要使用渐变色,实现颜色越来越浅的效果
关键代码:CMProcessBar1.cpp
CMProcessBar1::CMProcessBar1(QWidget *parent) : QWidget(parent), ui(new Ui::CMProcessBar1){ ui->setupUi(this); QTimer *timer = new QTimer; connect(timer,QTimer::timeout,this,updaterRotation);// 定时旋转坐标系 timer->start(3);//定时3毫秒}CMProcessBar1::~CMProcessBar1(){ delete ui;}void CMProcessBar1::updaterRotation(){ //循环360度旋转坐标系 rotation++; if(rotation == 360){ rotation = 0; } update();}void CMProcessBar1::paintEvent(QPaintEvent *event){//根据QPaintPath画出渐变色的圆弧 int width = this->width(); int height = this->height(); int side = qMin(width, height); QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); painter.translate(width / 2, height / 2); painter.scale(side / 200.0, side / 200.0); QConicalGradient gra(QPoint(0,0),0); gra.setColorAt(0,QColor("#3BB6FE")); gra.setColorAt(1,QColor("#FFFFFF")); QBrush brush(gra); int radis = 40; int sider = 5; QRect rect(-radis,-radis,radis*2,radis*2); QPainterPath path; path.arcTo(rect,0, 270); QPainterPath subPath; subPath.addEllipse(rect.adjusted(sider, sider, -sider, -sider)); path = path-subPath; painter.setBrush(brush);//QColor("#66CFFF") painter.setPen(Qt::NoPen); painter.rotate(rotation); painter.drawPath(path);}
免责声明:本站发布的内容(图片、视频和文字)以原创、来自互联网转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:ts@56dr.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
Copyright © 2009-2021 56dr.com. All Rights Reserved. 特网科技 版权所有 珠海市特网科技有限公司 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 中国互联网举报中心 增值电信业务经营许可证B2