QT制作自定义进度条(圆环状)
其实实现原理基本上是使用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制作自定义进度条(圆环状)相关推荐
- QT自定义进度条-画圆盘
目录 QT自定义进度条-画圆盘 六等分圆盘 QT自定义进度条-画圆盘 六等分圆盘 void PaintWidget::paintEvent(QPaintEvent *e) {QPainter pain ...
- 进度条上的小圆点怎么做_傲视网:【AE教程】如何制作环形进度条(第一讲)...
原标题:傲视网:[AE教程]如何制作环形进度条(第一讲) 大家好,福利来啦!这里将分享如何制作环形进度条,教你如何从入门到精通学AE. 环形进度条是个特殊的动画,在旋转的基础上还要选择性地显示部分区域 ...
- 用PowerPoint2007制作倒计时进度条
今天心血来潮,想学习ppt的一些有趣的样式,就到网上搜索了下, 看了几个网易学院上提供的ppt视频和IT资源库上的一些小技巧.现在就介绍一下如何制作倒计时进度条吧(多余的步骤我就不写了,图我就直接用它 ...
- android自定义进度条渐变色View,不使用任何图片资源
最近在公司,项目不是很忙了,偶尔看见一个兄台在CSDN求助,帮忙要一个自定义的渐变色进度条,我当时看了一下进度条,感觉挺漂亮的,就尝试的去自定义view实现了一个,废话不说,先上图吧! 这个自 ...
- android 自定义 进度条 旋转,Android_Android ProgressBar进度条使用详解,ProgressBar进度条,分为旋转进 - phpStudy...
Android ProgressBar进度条使用详解 ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,之前一直不明白进度条如何在实际项目中使用,网上演示进度条的案 ...
- android ProgressBar 自定义进度条颜色
android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对android自定义进度条的学习过程! 这个没法了只能看源码了,还好下载了源码, sources\bas ...
- IOS开发基础之绘制饼图、柱状图、自定义进度条
IOS开发基础之绘制饼图.柱状图.自定义进度条 源码在我的主页里 1.绘制饼图 效果 源码 // LJView.m // 34-绘图饼图 // Created by 鲁军 on 2021/2/23. ...
- [html] 如何使用纯html制作一个进度条?
[html] 如何使用纯html制作一个进度条? HTML中的progress () 元素用来显示一项任务的完成进度.虽然规范中没有规定该元素具体如何显示,浏览器开发商可以自己决定,但通常情况下,该元 ...
- android自定义进度条_Android中的自定义进度栏
android自定义进度条 Custom progress bar in android application gives it a personal touch. In this tutorial ...
- 30天自制操作系统——第四天使用C语言制作操作系统进度条
昨天已经让画面显示黑屏了,但是黑屏太没意思,今天来让画面画点东西吧. 今天的任务还是比较有趣的,主要包括内存写入.画面显示条纹图案.设定色号.绘制矩形,最后制作一个进度条. 每个大标题下的代码,都在文 ...
最新文章
- Python 常用Web框架的比较
- Xcode(7.0以上版本)真机调试
- erlang精要(10)-erl(2)
- python批量导入MongoDB数据库
- 每日程序C语言32-取一个整数从右端开始的4-7位
- 面试官:Thread.sleep(0) 有什么用?
- clickhouse原理解析与应用实践_编程好书推荐《Redis 深度历险:核心原理与应用实践》...
- names文件和data文件_data.table让你的读取速度提升百倍
- 56. magento 判断 https or http
- 转iOS深拷贝与浅拷贝 附NSSet讲解
- java pdf转jpg字体问题_java生成pdf字体的坑
- Python 导入包时报错 Traceback (most recent call last)
- 柯桥增值税留抵如何退税?
- Python学习教程-1_Introductions
- Coolpad(酷派) 进入手机工厂模式
- android 支付宝 40247,iOS——集成支付宝 系统繁忙,请稍后再试ALI40247
- linux硬盘ro改为rw,RO,RW,ZI 和scatter file详解(转载)
- MTL框架:模型、权重与融合公式
- javac java编译-g
- matlab案例分析总结,MATLAB统计分析与应用:40个案例分析
热门文章
- POJ2074 Line of Sight
- win10如何打开摄像头_win10系统,蓝牙关闭,如何打开?
- mysql删除注册表mysqld要删除吗_删库就一定要跑路吗?rm删除文件后空间还存在似乎说明了什么...
- matlab trplot2,一知半解|MATLAB机器人建模与仿真控制(2)
- 为什么java导入有x_ImportError:无法导入名称X
- 华擎b365m itx 黑苹果_14nm退回22nm:华擎首秀五款B365主板
- oracle物理块坏了重启,Oracle 物理结果损坏处理
- jquery name选择器_jQuery学习(1)
- sap 用户权限表_系统管理(BASIS)之 SAP用户权限介绍
- Introduction to Computer Networking学习笔记(二十八):DNS