代码:

#ifndef MYPROGRESSBAR_H
#define MYPROGRESSBAR_H#include <QProgressBar>class myProgressBar : public QProgressBar
{
public:myProgressBar(QWidget * parent = nullptr);protected:void paintEvent(QPaintEvent *event)override;
};#endif // MYPROGRESSBAR_H
#include "myprogressbar.h"
#include <QPainter>
#include <QStyleOptionProgressBar>
#include <QStylePainter>
#include <QDebug>
#include <QPaintEvent>myProgressBar::myProgressBar(QWidget *parent):QProgressBar(parent)
{setMinimumSize(180,150);setAlignment(Qt::AlignCenter);
}void myProgressBar::paintEvent(QPaintEvent *event)
{QStylePainter painter(this);painter.setRenderHint(QPainter::Antialiasing,true);QStyleOptionProgressBar option;initStyleOption(&option);
//    painter.drawControl(QStyle::CE_ProgressBar,option);QStyleOptionProgressBar opt1 = option;opt1.rect = this->style()->subElementRect(QStyle::SE_ProgressBarContents, &opt1, this);QStyleOptionProgressBar opt2 = option;QRect rect = QRect(opt1.rect.topLeft().x(),opt1.rect.topLeft().y(),opt1.rect.width() * opt1.progress / opt1.maximum,opt1.rect.height());auto eventRect = event->rect();QLinearGradient linearGradient(eventRect.topLeft(),eventRect.topRight());linearGradient.setColorAt(0.0,Qt::red);linearGradient.setColorAt(0.3,Qt::cyan);linearGradient.setColorAt(0.7,Qt::green);linearGradient.setColorAt(1.0,Qt::blue);painter.fillRect(rect,linearGradient);if (option.textVisible){opt2.rect = this->style()->subElementRect(QStyle::SE_ProgressBarLabel, &opt2, this);painter.setPen(Qt::red);painter.drawControl(QStyle::CE_ProgressBarLabel, opt2);}
}

使用:

Widget::Widget(QWidget *parent): QWidget(parent)
{QVBoxLayout * vb = new QVBoxLayout(this);myProgressBar * bar = new myProgressBar(this);QSlider * slider = new QSlider(Qt::Horizontal,this);slider->setRange(0,100);bar->setRange(0,100);vb->setContentsMargins(20,20,20,20);vb->addWidget(bar);vb->addStretch();vb->addWidget(slider);connect(slider,&QSlider::valueChanged,bar,&QProgressBar::setValue);
}

效果:

相关博文:QT风格(QStyle):绘制一个自定义QProgressBar_友善啊,朋友的博客-CSDN博客

Qt编写自定义控件:简单的方式绘制渐变进度条相关推荐

  1. Android开发之绘制自定义进度条 | 渐变进度条 | 斜角进度条的方法

    老套路先上图 先看上面的斜角进度条的实现方法: package cn.yhsh.appwidget;import android.content.Context; import android.gra ...

  2. SVG绘制圆环进度条

    在我们的大屏可视化项目中,经常会用到各种各样的图表.与传统的表格展示.枯燥的文字阐述相比,图表展示则使用户看起来更加直观.数据的展示则更加一目了然.本文基于svg绘图技术结合前端技术栈vue,以工作中 ...

  3. Android 绘制圆形进度条

    Android 绘制圆形进度条 最近项目上有一些需求,需要绘制圆形的进度条满足设计上和交互上的需求: 实现思路 在画布上直接绘制View,需要了解一下几点 1.需要画一个圆 2.圆圈上有不同进度的颜色 ...

  4. 在html中怎么用圆形渐变,css怎么实现圆形渐变进度条效果

    css怎么实现圆形渐变进度条效果 发布时间:2021-03-17 10:29:57 来源:亿速云 阅读:129 作者:小新 这篇文章给大家分享的是有关css怎么实现圆形渐变进度条效果的内容.小编觉得挺 ...

  5. 精通Android自定义View(十二)绘制圆形进度条

    1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...

  6. echarts渐变进度条

    echarts渐变进度条 展示情况如下图 相关代码 var data = ['数据一','数据二',"数据三","数据四","数据五",&q ...

  7. 使用canvas绘制圆环进度条

    使用canvas绘制圆环进度条 技术要求 需要一点点数学基础 需要对 canvas 的常见的方法熟悉 一点点数学基础 已知圆心,半径,角度,求圆上的点坐标 canvas 常见的方法 菜鸟教程 扬帆起航 ...

  8. 大屏可视化数据面板分格渐变进度条、数字翻牌器及其刷新动效实现

    数据可视化大屏是当前可视化领域的一项热门应用,通常可以分为信息展示类.数据分析类及监控预警类.这类应用的视觉设计通常效果炫酷,动效丰富,有时候一些页面布局和动画实现会对前端人员有一定的挑战性,在这里分 ...

  9. css3做渐变进度条

    布局: <body><section class="container"><div class="loading-bar"> ...

最新文章

  1. 35.2. Subversion 版本控制
  2. 8个概念告诉你人工智能
  3. HTTP协议:看个新闻原来这么麻烦
  4. 不仅搞定“梯度消失”,还让CNN更具泛化性:港科大开源深度神经网络训练新方法
  5. linux网卡设置详解,史上最详细的Linux网卡ifcfg-eth0配置详解
  6. SEOer将灭绝,尽快辅佐“百毒”对手
  7. 暴风集团:9月21日起公司股票交易进入退市整理期
  8. c++语言中类型的转换
  9. 数字盲打怎么练_小键盘数字盲打练习
  10. 笔记本开机前插入耳机再开机有声音,开机后插入耳机后没声音
  11. マーケティング用語の英訳一覧(Glossary of marketing terms)
  12. 抖音的显性和隐形限流的根本原因
  13. 阿里的“无用”和“有用”
  14. 阿里sentinel监控客户端配置
  15. node.js中公培训笔记大全(讲的一般,小白基础入门)
  16. JAVA范例 十三)多线程编程(3)
  17. nao机器人拆解_两周年了 Pepper都经历了什么呢?
  18. 【陈工笔记】# latex中如何将图片并排处理 #
  19. STM32之FSMC驱动LCD深入理解
  20. 用555芯片构成单稳态电路分析以及参数选择

热门文章

  1. python中remove函数的用法_Remove函数用法
  2. 为什么CPU需要时钟才能工作
  3. 西安电大计算机文化基础中考,计算机文化基础试题3.pdf
  4. {嵌入式}之TQ2440(天嵌)小记
  5. wifi连接成功,但提示“无法连接到Internet”(已解决)
  6. 修复iPhone系统故障导致的黑屏
  7. 苹果6s系统更新无服务器,我的iPhone6s国行 系统更新一直显示“正在检查更新”,无法更新是为什么?...
  8. selenium 模拟IE浏览器click元素无反应的解决方案 (python3)
  9. 01.JS基础_前端的语法(4)
  10. 2020JAVA面试题附答案(持续更新版)