其实实现原理基本上是使用paintEvent进行绘制,在paintevent中绘制时设置变量,自己传入变量值。然后进行update就可以了。
直接看代码
drawpie.h

#ifndef DRAWPIE_H
#define DRAWPIE_H#include <QWidget>
#include <qtoolbar.h>
#include <QSlider>class drawpie : public QWidget
{Q_OBJECTpublic:drawpie(QWidget *parent = nullptr);~drawpie();protected:void paintEvent(QPaintEvent *event);protected slots:void setSliderValue();
private:QSlider *m_slider;int m_value=0;};
#endif // DRAWPIE_H

drawpie.cpp

#include "drawpie.h"
#include <QPainter>
#include <QPaintEvent>
#include <QDebug>
#include <QHBoxLayout>drawpie::drawpie(QWidget *parent): QWidget(parent)
{this->setStyleSheet("background-color:white");m_slider=new QSlider(this);connect(m_slider,&QSlider::valueChanged,this,&drawpie::setSliderValue);m_slider->setRange(0,100);QHBoxLayout *mainLayout=new QHBoxLayout(this);mainLayout->addStretch();mainLayout->addWidget(m_slider);this->setLayout(mainLayout);
}drawpie::~drawpie()
{}void drawpie::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setPen(QPen(Qt::transparent,4,Qt::SolidLine));painter.setRenderHint(QPainter::Antialiasing);QPainterPath path;path.addEllipse(0, 0, 200, 200);path.addEllipse(50, 50, 100, 100);painter.setBrush( QBrush(QColor("lightblue")) );painter.drawPath(path);painter.setBrush(QBrush(QColor("green")));QRect rect(0,0,200,200);QRect rect1(50, 50, 100, 100);painter.drawPie(rect,270*16,3.6*m_value*16);painter.setBrush(QBrush(QColor("white")));painter.drawPie(rect1,270*16,3.6*m_value*16);}void drawpie::setSliderValue()
{m_value=m_slider->value();qDebug()<<"slider::"<<m_value;update();
}

showwgt.h

#ifndef SHOWWGT_H
#define SHOWWGT_H#include <QWidget>
#include "drawpie.h"class ShowWgt : public QWidget
{Q_OBJECT
public:explicit ShowWgt(QWidget *parent = nullptr);~ShowWgt();
signals:public slots:private:drawpie *m_pie[20][10];
};#endif // SHOWWGT_H

showwgt.cpp

#include "showwgt.h"
#include <qscrollbar.h>
#include <qgridlayout.h>
#include <QScrollArea>ShowWgt::ShowWgt(QWidget *parent) : QWidget(parent)
{QScrollArea *area=new QScrollArea(this);QGridLayout *gridLayout=new QGridLayout(this);QWidget *containWgt=new QWidget(this);for(int i=0;i<20;i++){for(int j=0;j<10;j++){m_pie[i][j]=new drawpie(containWgt);gridLayout->addWidget(m_pie[i][j],i,j);m_pie[i][j]->setFixedSize(250,200);}}containWgt->setLayout(gridLayout);area->setWidget(containWgt);QVBoxLayout *mainLayout=new QVBoxLayout(this);mainLayout->addWidget(area);mainLayout->setMargin(0);this->setLayout(mainLayout);}ShowWgt::~ShowWgt()
{}

main.cpp

#include "drawpie.h"
#include "showwgt.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);ShowWgt w;w.show();return a.exec();
}

亲测可用。
效果图如下:

有什么不懂的可以在评论区留言 Bye。

QT制作自定义进度条(圆环状)相关推荐

  1. QT自定义进度条-画圆盘

    目录 QT自定义进度条-画圆盘 六等分圆盘 QT自定义进度条-画圆盘 六等分圆盘 void PaintWidget::paintEvent(QPaintEvent *e) {QPainter pain ...

  2. 进度条上的小圆点怎么做_傲视网:【AE教程】如何制作环形进度条(第一讲)...

    原标题:傲视网:[AE教程]如何制作环形进度条(第一讲) 大家好,福利来啦!这里将分享如何制作环形进度条,教你如何从入门到精通学AE. 环形进度条是个特殊的动画,在旋转的基础上还要选择性地显示部分区域 ...

  3. 用PowerPoint2007制作倒计时进度条

    今天心血来潮,想学习ppt的一些有趣的样式,就到网上搜索了下, 看了几个网易学院上提供的ppt视频和IT资源库上的一些小技巧.现在就介绍一下如何制作倒计时进度条吧(多余的步骤我就不写了,图我就直接用它 ...

  4. android自定义进度条渐变色View,不使用任何图片资源

    最近在公司,项目不是很忙了,偶尔看见一个兄台在CSDN求助,帮忙要一个自定义的渐变色进度条,我当时看了一下进度条,感觉挺漂亮的,就尝试的去自定义view实现了一个,废话不说,先上图吧!     这个自 ...

  5. android 自定义 进度条 旋转,Android_Android ProgressBar进度条使用详解,ProgressBar进度条,分为旋转进 - phpStudy...

    Android ProgressBar进度条使用详解 ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,之前一直不明白进度条如何在实际项目中使用,网上演示进度条的案 ...

  6. android ProgressBar 自定义进度条颜色

    android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对android自定义进度条的学习过程! 这个没法了只能看源码了,还好下载了源码, sources\bas ...

  7. IOS开发基础之绘制饼图、柱状图、自定义进度条

    IOS开发基础之绘制饼图.柱状图.自定义进度条 源码在我的主页里 1.绘制饼图 效果 源码 // LJView.m // 34-绘图饼图 // Created by 鲁军 on 2021/2/23. ...

  8. [html] 如何使用纯html制作一个进度条?

    [html] 如何使用纯html制作一个进度条? HTML中的progress () 元素用来显示一项任务的完成进度.虽然规范中没有规定该元素具体如何显示,浏览器开发商可以自己决定,但通常情况下,该元 ...

  9. android自定义进度条_Android中的自定义进度栏

    android自定义进度条 Custom progress bar in android application gives it a personal touch. In this tutorial ...

  10. 30天自制操作系统——第四天使用C语言制作操作系统进度条

    昨天已经让画面显示黑屏了,但是黑屏太没意思,今天来让画面画点东西吧. 今天的任务还是比较有趣的,主要包括内存写入.画面显示条纹图案.设定色号.绘制矩形,最后制作一个进度条. 每个大标题下的代码,都在文 ...

最新文章

  1. Python 常用Web框架的比较
  2. Xcode(7.0以上版本)真机调试
  3. erlang精要(10)-erl(2)
  4. python批量导入MongoDB数据库
  5. 每日程序C语言32-取一个整数从右端开始的4-7位
  6. 面试官:Thread.sleep(0) 有什么用?
  7. clickhouse原理解析与应用实践_编程好书推荐《Redis 深度历险:核心原理与应用实践》...
  8. names文件和data文件_data.table让你的读取速度提升百倍
  9. 56. magento 判断 https or http
  10. 转iOS深拷贝与浅拷贝 附NSSet讲解
  11. java pdf转jpg字体问题_java生成pdf字体的坑
  12. Python 导入包时报错 Traceback (most recent call last)
  13. 柯桥增值税留抵如何退税?
  14. Python学习教程-1_Introductions
  15. Coolpad(酷派) 进入手机工厂模式
  16. android 支付宝 40247,iOS——集成支付宝 系统繁忙,请稍后再试ALI40247
  17. linux硬盘ro改为rw,RO,RW,ZI 和scatter file详解(转载)
  18. MTL框架:模型、权重与融合公式
  19. javac java编译-g
  20. matlab案例分析总结,MATLAB统计分析与应用:40个案例分析

热门文章

  1. POJ2074 Line of Sight
  2. win10如何打开摄像头_win10系统,蓝牙关闭,如何打开?
  3. mysql删除注册表mysqld要删除吗_删库就一定要跑路吗?rm删除文件后空间还存在似乎说明了什么...
  4. matlab trplot2,一知半解|MATLAB机器人建模与仿真控制(2)
  5. 为什么java导入有x_ImportError:无法导入名称X
  6. 华擎b365m itx 黑苹果_14nm退回22nm:华擎首秀五款B365主板
  7. oracle物理块坏了重启,Oracle 物理结果损坏处理
  8. jquery name选择器_jQuery学习(1)
  9. sap 用户权限表_系统管理(BASIS)之 SAP用户权限介绍
  10. Introduction to Computer Networking学习笔记(二十八):DNS