Qt :圆圈加载进度条(转圈圈)
两种样式
圆形
环形
源码
头文件
这里没有使用任何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 :圆圈加载进度条(转圈圈)相关推荐
- Android学习笔记(Android Studio)3-3(ProgressBar ProgressDialog)(加载进度条、转圈圈)UI组件之弹出组件
Android学习笔记3-3 推荐新手向学习视频:B站https://www.bilibili.com/video/av38409964点我传送 3-3 ProgressBar & Progr ...
- 一个KVO 实现WKWebView加载进度条的例子 (注意最后移除观察者)
// // OpenWebViewController.m // Treasure // // Created by 蓝蓝色信子 on 16/7/29. // Copyright © 2016年 GY ...
- WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt
主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...
- 小米视频加载进度条效果实现
原文:小米视频加载进度条效果实现 好吧,其实这些都是我闲暇时自己做着玩的,以前总是拿来主义,现在分享一下让我也为大家做一点贡献好了.废话不说了,看效果. 好吧 其实没什么技术含量 直接上代码好了 和我 ...
- 浅谈前端实现页面加载进度条以及 nprogress.js 的实现
以前在 Vue 的项目用了 nprogress 这个插件,一直对于其如何得知加载进度充满好奇,最近又看到了「前端如何实现页面加载进度条」这个问题,今天周六恰好一探究竟.以下仅为一家之言,如有异议,欢迎 ...
- Vue项目实战06:nprogress页面加载进度条
博客: https://lvsige.top/ nprogress页面加载进度条 前言 很多时候在访问网页的时候我们总是看到页面在加载中,可以却不知道要加载多久,无期限的等待总是让人烦躁不安,所以我们 ...
- iview地区加载_LoadingBar 加载进度条
LoadingBar 加载进度条 概述 全局创建一个显示页面加载.异步请求.文件上传等的加载进度条. 说明 LoadingBar 只会在全局创建一个,因此在任何位置调用的方法都会控制这同一个组件.主要 ...
- 【原生JS插件】LoadingBar页面顶部加载进度条
先展示一下已经实现的效果: 预览地址:http://dtdxrk.github.io/js-plug/LoadingBar/index.html 看到手机上的浏览器内置了页面的加载进度条,想用在pc上 ...
- mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据
mvvm 耗时加载进度条 先前的文章简要介绍了RIA框架ZK,以及其CSS Selector启发的控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担. 然后, ...
最新文章
- Centos 6.8 搭建owncloud 私有云盘
- Android 截屏并写入SD卡中
- knockout 学习笔记
- html函数属性的赋予,你可以将javascript函数名称设置为html属性吗?
- 安卓应用安全指南 4.4.3 创建/使用服务高级话题
- Angular2学习笔记——NgModule
- 有关于Java Map,应该掌握的8个问题
- 自定义路由匹配和生成
- 一个逐页抓取网站小说的爬虫
- (十一)ntp时间同步
- 中关村-DIY操作系统之替换DV2804恢复分区中的wim镜像
- 乐得瑞LDR6282B 支持双C口盲插便携显示器驱动板方案
- 99乘法表带颜色HTML隔行变色,javascript小实例,实现99乘法表及隔行变色
- 解剖学坐标体系(LPS , RAS和LAS)
- Cream Finance 重入漏洞事件分析
- java自行车起源_公路自行车赛的起源、发展及历史
- XYCMS搬家公司建站系统 v3.8
- 使用struts2框架来实现前台与后台的交互
- 游戏手柄HID描述符
- macbook充电_如何判断MacBook是否正在充电
热门文章
- 查看日志的多种命令之less,tail,cat,sz等
- “上下求索”的人工智能市场了发生什么变化?
- flink-cdc 基础教程 完结 附报错解决(二)
- 背完这444句,你英语口语就没问题了~~~(比拿下四级厉害多了,有空可以教教孩子}...
- Greenplum数据库快速调优
- python 将对象与bytes类型相互转换,使用场景之一 : redis_scrapy
- 分布式架构-流量治理-流量控制
- a33linux快速移植,全志A33-Linux软硬件定制
- 苹果海外现金量“超微软和高通之和”
- 程序员2014年风水转运五大方法