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语言制作操作系统进度条
昨天已经让画面显示黑屏了,但是黑屏太没意思,今天来让画面画点东西吧. 今天的任务还是比较有趣的,主要包括内存写入.画面显示条纹图案.设定色号.绘制矩形,最后制作一个进度条. 每个大标题下的代码,都在文 ...
最新文章
- 《初级前端开发人员经常容易忽视几个细节问题汇总》
- Jerasure库接口简介及性能测试
- 三目运算符 改变a标签的class属性
- CCNP实验+笔记(完整版)
- GERBER文件格式简介
- 攻防世界-web-shrine-从0到1的解题历程writeup
- 「Jupyter」ubuntu下安装jupyterlab后jupyterlab:未找到命令
- OpenCV实现最大最小距离聚类算法
- php判断几维数组的方法,php如何判断数组是几维
- 【空间数据库】Windows操作系统PostgreSQL+PostGIS环境搭建图文安装教程
- 服务器与项目之间的关系,项目 服务器 和数据库的关系
- Docker 创建新的开源社区,开发 Compose Specification
- 物资管理系统c语言运行程序,C语言实现仓库物资管理系统.pdf
- 0-12V的模拟量隔离模块的一些感悟
- ubuntu 有key登入sshd Failed publickey for xxx from xx port Xxx ssh2
- vscode win10笔记本 蓝屏_联想拯救者Win10蓝屏0xc000000d的解决办法
- e2e 测试 出现的错误
- Kubernetes(K8s)基本概念:HPA(Pod横向自动扩容)、StatefulSet
- 几何坐标转化为极坐标
- 华以青钱柳降糖神茶,告别糖尿病的新选择
热门文章
- c语言输入m行m列的二维数组,编写一个函数,用于计算具有n行和m列的二维数组中指定列的平均值以及数组各行的和的最小值。...
- android 对文件的读写,对android的/sys/文件进行读写操作
- 从优秀到卓越 pdf_演讲口才培训:演讲能力是卓越领导者需要具备的能力
- python3.6 asyncio paramiko_网工的Python之路:Concurrent.Futures
- 组态王中时间存access怎么存_组态王如何实现实时显示数据并且记录到Access数据库中?...
- html博客网页代码_Python自动化运维系列:Django搭建个人博客之前端篇
- centos7.0配置php环境,如何在centos7中配置一个php开发环境
- python 类属性排序_Python 使用多属性来进行排序
- c语言顺序表的初始化Status,数据结构(c语言版)顺序表的建立、初始化、插入、删除、遍历等12个基本操作及测试...
- linux安装apache+php+mysql_linux编译安装Apache+PHP+Mysql