其实实现原理基本上是使用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. 《初级前端开发人员经常容易忽视几个细节问题汇总》
  2. Jerasure库接口简介及性能测试
  3. 三目运算符 改变a标签的class属性
  4. CCNP实验+笔记(完整版)
  5. GERBER文件格式简介
  6. 攻防世界-web-shrine-从0到1的解题历程writeup
  7. 「Jupyter」ubuntu下安装jupyterlab后jupyterlab:未找到命令
  8. OpenCV实现最大最小距离聚类算法
  9. php判断几维数组的方法,php如何判断数组是几维
  10. 【空间数据库】Windows操作系统PostgreSQL+PostGIS环境搭建图文安装教程
  11. 服务器与项目之间的关系,项目 服务器 和数据库的关系
  12. Docker 创建新的开源社区,开发 Compose Specification
  13. 物资管理系统c语言运行程序,C语言实现仓库物资管理系统.pdf
  14. 0-12V的模拟量隔离模块的一些感悟
  15. ubuntu 有key登入sshd Failed publickey for xxx from xx port Xxx ssh2
  16. vscode win10笔记本 蓝屏_联想拯救者Win10蓝屏0xc000000d的解决办法
  17. e2e 测试 出现的错误
  18. Kubernetes(K8s)基本概念:HPA(Pod横向自动扩容)、StatefulSet
  19. 几何坐标转化为极坐标
  20. 华以青钱柳降糖神茶,告别糖尿病的新选择

热门文章

  1. c语言输入m行m列的二维数组,编写一个函数,用于计算具有n行和m列的二维数组中指定列的平均值以及数组各行的和的最小值。...
  2. android 对文件的读写,对android的/sys/文件进行读写操作
  3. 从优秀到卓越 pdf_演讲口才培训:演讲能力是卓越领导者需要具备的能力
  4. python3.6 asyncio paramiko_网工的Python之路:Concurrent.Futures
  5. 组态王中时间存access怎么存_组态王如何实现实时显示数据并且记录到Access数据库中?...
  6. html博客网页代码_Python自动化运维系列:Django搭建个人博客之前端篇
  7. centos7.0配置php环境,如何在centos7中配置一个php开发环境
  8. python 类属性排序_Python 使用多属性来进行排序
  9. c语言顺序表的初始化Status,数据结构(c语言版)顺序表的建立、初始化、插入、删除、遍历等12个基本操作及测试...
  10. linux安装apache+php+mysql_linux编译安装Apache+PHP+Mysql