其实实现原理基本上是使用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. 你已经是个成熟的985大学了,请不要在大一教 C 语言!
  2. 命令行调用VS编译器
  3. 换行符‘\n’和回车符‘\r’
  4. 支付宝打年兽神器 v1.4.5
  5. centos gradle 安装
  6. k短路-洛谷P2483 [SDOI2010]魔法猪学院
  7. matlab简介,Matlab简介及各历史版本
  8. linux查看数据区块大小,Linux显示指定区块大小为1048576字节
  9. [转]斗鱼大数据搭建的经验和坑
  10. 日出日落时间和年均光照时长计算 java
  11. 首阴战法胜率不高?应该是忘记加上一个大前提!
  12. open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存
  13. 【工大SCIR】首次探索中文词信息增强中文口语语言理解!
  14. 打开word时提示需要安装包gaozhi.msi
  15. Mathpix替代品安装(LaTex-OCR)
  16. MYSQL-mysql中的truncate的用法
  17. 坚持#第89天~胡晨晨会给予我力量!
  18. linux系统命令大全
  19. 阿里云服务器安装指南
  20. 编程语言基础知识点总结程序

热门文章

  1. 慕课网仿去哪儿项目笔记--(三)-城市页面制作
  2. Express框架学习笔记-app.locals对象
  3. mysql集群和memcached_Memcached 高可用集群架构
  4. python远程执行shell脚本文件_python SSH模块登录,远程机执行shell命令实例解析
  5. java jdbc 参数 转义_jdbc URL中的各个参数详解
  6. nuget的原理_从零开始学习 dotnet 编译过程和 Roslyn 源码分析
  7. java 集合转字符串工具类,浅谈常用字符串与集合类转换的工具类
  8. win10右键卡顿原因_个个都能惊呆你WIN10小技巧分享(无需安装第三方软件)
  9. 零基础多久能学会python_零基础小白多久能学会python
  10. android+数据库类型转换,ANDROID数据库错误:不兼容的类型:INT不能转换到CursorFactory...