两种样式

圆形

环形

源码

头文件
这里没有使用任何ui文件

继承QDialog,设置标题栏隐藏,并设置为模态(阻塞父窗口):目的是为了让用户不能进行任何操作

#pragma once
#include <QDialog>
class JcProcessBar :public QDialog
{Q_OBJECT
public:JcProcessBar(QWidget* pParent = nullptr);~JcProcessBar();void paintEvent(QPaintEvent *event);
private slots:void  updaterRotation();
private:double rotation = 0.0;QTimer *timer = nullptr;
};

cpp

#include "stdafx.h"
#include "JcProcessBar.h"
#include<QPainter>
#include<QTimer>
#include <QDebug>
JcProcessBar::JcProcessBar(QWidget* pParent  ): QDialog(pParent)
{this->resize(100, 100);timer = new QTimer();connect(timer, &QTimer::timeout, this, &JcProcessBar::updaterRotation);// 定时旋转坐标系timer->start(10); this->setModal(true);//设置为模态,该窗口不关闭,父窗口不能操作//隐藏标题栏//this->setWindowFlags(Qt::FramelessWindowHint);this->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);//背景透明setAttribute(Qt::WA_TranslucentBackground, true);
}JcProcessBar::~JcProcessBar()
{if (timer){delete timer;timer = nullptr;}
}
void  JcProcessBar::updaterRotation()
{rotation++;if (rotation == 360){rotation = 0;}update();
}
void JcProcessBar::paintEvent(QPaintEvent *event)
{//根据QPaintPath画出渐变色的圆弧int width = this->width();int height = this->height();int side = qMin(width, height);QPainter painter(this);painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);painter.translate(width / 2, height / 2);painter.scale(side / 200.0, side / 200.0);QConicalGradient gra(QPoint(0, 0), 0);gra.setColorAt(0, QColor("#3BB6FE"));gra.setColorAt(1, QColor("#FFFFFF"));QBrush brush(gra);int radis = 40;int sider = 10;QRect rect(-radis, -radis, radis * 2, radis * 2);QPainterPath path;path.arcTo(rect, 0, 270);QPainterPath subPath;subPath.addEllipse(rect.adjusted(sider, sider, -sider, -sider));//这行注释掉就是圆形,加上去就是环形//path = path - subPath;painter.setBrush(brush);painter.setPen(Qt::NoPen);painter.rotate(rotation);painter.drawPath(path);
}

这里使用QPainterPath 绘图
首先绘制 270°的圆使用

 QRect rect(-radis, -radis, radis * 2, radis * 2);QPainterPath path;path.arcTo(rect, 0, 270);

也就是第一张图

如果要绘制圆环,就再定义一个 QPainterPath

 QPainterPath subPath;subPath.addEllipse(rect.adjusted(sider, sider, -sider, -sider));

相减得到圆环

path = path - subPath;

Qt :圆圈加载进度条(转圈圈)相关推荐

  1. Android学习笔记(Android Studio)3-3(ProgressBar ProgressDialog)(加载进度条、转圈圈)UI组件之弹出组件

    Android学习笔记3-3 推荐新手向学习视频:B站https://www.bilibili.com/video/av38409964点我传送 3-3 ProgressBar & Progr ...

  2. 一个KVO 实现WKWebView加载进度条的例子 (注意最后移除观察者)

    // // OpenWebViewController.m // Treasure // // Created by 蓝蓝色信子 on 16/7/29. // Copyright © 2016年 GY ...

  3. WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

    主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...

  4. 小米视频加载进度条效果实现

    原文:小米视频加载进度条效果实现 好吧,其实这些都是我闲暇时自己做着玩的,以前总是拿来主义,现在分享一下让我也为大家做一点贡献好了.废话不说了,看效果. 好吧 其实没什么技术含量 直接上代码好了 和我 ...

  5. 浅谈前端实现页面加载进度条以及 nprogress.js 的实现

    以前在 Vue 的项目用了 nprogress 这个插件,一直对于其如何得知加载进度充满好奇,最近又看到了「前端如何实现页面加载进度条」这个问题,今天周六恰好一探究竟.以下仅为一家之言,如有异议,欢迎 ...

  6. Vue项目实战06:nprogress页面加载进度条

    博客: https://lvsige.top/ nprogress页面加载进度条 前言 很多时候在访问网页的时候我们总是看到页面在加载中,可以却不知道要加载多久,无期限的等待总是让人烦躁不安,所以我们 ...

  7. iview地区加载_LoadingBar 加载进度条

    LoadingBar 加载进度条 概述 全局创建一个显示页面加载.异步请求.文件上传等的加载进度条. 说明 LoadingBar 只会在全局创建一个,因此在任何位置调用的方法都会控制这同一个组件.主要 ...

  8. 【原生JS插件】LoadingBar页面顶部加载进度条

    先展示一下已经实现的效果: 预览地址:http://dtdxrk.github.io/js-plug/LoadingBar/index.html 看到手机上的浏览器内置了页面的加载进度条,想用在pc上 ...

  9. mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据

    mvvm 耗时加载进度条 先前的文章简要介绍了RIA框架ZK,以及其CSS Selector启发的控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担. 然后, ...

最新文章

  1. Centos 6.8 搭建owncloud 私有云盘
  2. Android 截屏并写入SD卡中
  3. knockout 学习笔记
  4. html函数属性的赋予,你可以将javascript函数名称设置为html属性吗?
  5. 安卓应用安全指南 4.4.3 创建/使用服务高级话题
  6. Angular2学习笔记——NgModule
  7. 有关于Java Map,应该掌握的8个问题
  8. 自定义路由匹配和生成
  9. 一个逐页抓取网站小说的爬虫
  10. (十一)ntp时间同步
  11. 中关村-DIY操作系统之替换DV2804恢复分区中的wim镜像
  12. 乐得瑞LDR6282B 支持双C口盲插便携显示器驱动板方案
  13. 99乘法表带颜色HTML隔行变色,javascript小实例,实现99乘法表及隔行变色
  14. 解剖学坐标体系(LPS , RAS和LAS)
  15. Cream Finance 重入漏洞事件分析
  16. java自行车起源_公路自行车赛的起源、发展及历史
  17. XYCMS搬家公司建站系统 v3.8
  18. 使用struts2框架来实现前台与后台的交互
  19. 游戏手柄HID描述符
  20. macbook充电_如何判断MacBook是否正在充电

热门文章

  1. 查看日志的多种命令之less,tail,cat,sz等
  2. “上下求索”的人工智能市场了发生什么变化?
  3. flink-cdc 基础教程 完结 附报错解决(二)
  4. 背完这444句,你英语口语就没问题了~~~(比拿下四级厉害多了,有空可以教教孩子}...
  5. Greenplum数据库快速调优
  6. python 将对象与bytes类型相互转换,使用场景之一 : redis_scrapy
  7. 分布式架构-流量治理-流量控制
  8. a33linux快速移植,全志A33-Linux软硬件定制
  9. 苹果海外现金量“超微软和高通之和”
  10. 程序员2014年风水转运五大方法