Qt自定义控件实现圆圈加载进度条

本文实例为大家分享了Qt实现圆圈加载进度条的具体代码,供大家参考,具体内容如下

先看效果图:

思路:画一个占270度的圆弧,然后定义一个定时器,定时旋转坐标系,实现旋转的效果。圆弧需要使用渐变色,实现颜色越来越浅的效果

关键代码:CMProcessBar1.cpp

CMProcessBar1::CMProcessBar1(QWidget *parent) :
  QWidget(parent),
  ui(new Ui::CMProcessBar1)
{
  ui->setupUi(this);
  QTimer *timer = new QTimer;
  connect(timer,QTimer::timeout,this,updaterRotation);// 定时旋转坐标系
  timer->start(3);//定时3毫秒
}

CMProcessBar1::~CMProcessBar1()
{
  delete ui;
}

void CMProcessBar1::updaterRotation(){ //循环360度旋转坐标系
  rotation++;
  if(rotation == 360){
    rotation = 0;
  }
  update();
}

void CMProcessBar1::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 = 5;
  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);//QColor("#66CFFF")
  painter.setPen(Qt::NoPen);
  painter.rotate(rotation);
  painter.drawPath(path);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Qt自定义控件实现圆盘进度条

    本文实例为大家分享了Qt圆盘进度条的具体代码,供大家参考,具体内容如下 自定义控件二:圆盘进度条 上效果图: 主要思路:使用qpainter根据图形需求 画圆和圆弧,画指针(多边形,指定坐标即可),根据具体的value值旋转坐标系,使指针达到旋转效果,旋转度数是根据value值,总共360度,占比求得.最中间需要画文字上去,每次更新value时调用update()方法,重绘界面. 主要代码:CMPassrate1.cpp void CMPassrate1::paintEvent(QPaintEv

  • Qt自定义控件实现圆圈加载进度条

    本文实例为大家分享了Qt实现圆圈加载进度条的具体代码,供大家参考,具体内容如下 先看效果图: 思路:画一个占270度的圆弧,然后定义一个定时器,定时旋转坐标系,实现旋转的效果.圆弧需要使用渐变色,实现颜色越来越浅的效果 关键代码:CMProcessBar1.cpp CMProcessBar1::CMProcessBar1(QWidget *parent) : QWidget(parent), ui(new Ui::CMProcessBar1) { ui->setupUi(this); QTime

  • Android自定义控件之水平圆点加载进度条

    本文实例为大家分享了Android实现水平圆点加载进度条的具体代码,供大家参考,具体内容如下 先来看看要实现的效果 实现思路非常简单:当前变化的圆点先从最小半径变大到最大最大半径再变回最小半径的圆,然后再切换到下个圆点,同时颜色会先变浅在变会原来的颜色(可以理解为透明度变化),而且当前圆点的上上一个圆点颜色会不断变浅.大概就这样(可能我实现的效果和图片的有些出入) 先看下实现效果: 直接上代码: package com.kincai.testcustomview_pointprogress; i

  • Android自定义View实现圆形加载进度条

    本文实例为大家分享了Android自定义View实现圆形加载进度条的具体代码,供大家参考,具体内容如下 效果图 话不多说,咱们直接看代码 首先第一种: 1.创建自定义View类 public class MyRelative extends View {        public MyRelative(Context context) {         this(context, null); //手动改成this...     }       public MyRelative(Conte

  • 浅析JS异步加载进度条

    展现效果: 1) 当点击Load的时候,模拟执行异步加载. 浏览器被遮挡. 进度条出现. 实现思路: 1.当用户点击load button执行异步请求. 调用方法 出现加载条 2.怎么实现进度条呢? 1) 在document.body 新增一个div.覆盖浏览器. 设置背景会灰色. z-index = 999. 加载的时候让用户无法修改界面值 2) 在document.body 新增一个动态的div. 代码实现: Main.html: <!DOCTYPE html> <html>

  • Android Webview添加网页加载进度条实例详解

    推荐阅读:Android WebView线性进度条实例详解 最近在android项目中使用webview嵌套了一个抽奖活动网页,活动上线,运行良好(改了N次需求和突发bug),还好这种模式的活动,只需要修改网页,不需要重新打包发布市场,这也是这种模式开发的优势之一.后来据产品哥反馈说加载网页无进度提示,好吧,这个当时真没考虑这么多,这个要加加..想当然以为轻松搞定之....其实还是比轻松要复杂点... 1.首先自定义一个WebView控件 /** * 带进度条的Webivew * @author

  • Android自定义View基础开发之图片加载进度条

    学会了Paint,Canvas的基本用法之后,我们就可以动手开始实践了,先写个简单的图片加载进度条看看. 按照惯例,先看效果图,再决定要不要往下看: 既然看到这里了,应该是想了解这个图片加载进度条了,我们先看具体用法,再看自定义View的实现: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.co

  • pace.js页面加载进度条插件

    本文简单介绍插件pace.js. 在页面中引入Pace.js,页面就会自动监测你的请求(包括Ajax请求),在事件循环滞后,会在页面记录加载的状态以及进度情况.此插件的兼容性很好,可以兼容IE8以上的所有主流插件,而且其强大之处在于,你还可以引入加载进度条的主题样式,你可以选择任意颜色和多种动画效果(例如简约.闪光灯,MAC OSX,左侧填充,顶部填充,计数器和弹跳等等动画效果),如果你擅长修改css动画,那你就可以做出无限种可能性的动画,为你的网站增添个性化特色! 调用方法: 引入Pace.j

  • JavaScript实现网页加载进度条代码超简单

    网页进度条能够更好的反应当前网页的加载进度情况,loading进度条可用动画的形式从开始0%到100%完成网页加载这一过程.但是目前的浏览器并没有提供页面加载进度方面的接口,也就是说页面还无法准确返回页面实际加载的进度,本文中我们使用jQuery来实现页面加载进度条效果. HTML 首先我们要知道的是,目前没有任何浏览器可以直接获取正在加载对象的大小.所以我们无法通过数据大小来实现0-100%的加载显示过程. 因此我们需要通过html代码逐行加载的特性,在整页代码的若干个跳跃行数中设置节点,进行

  • Ajax 实现加载进度条

    ajax beforeSend: 先说说这个 beforeSend, 在请求发送前执行 比如 可以判断用户有没有登录 ,如果没有登录就停止请求 并提示. $.ajax({ url : 'my_action', dataType: 'script', beforeSend : function(xhr, opts){ if(1 == 1) //just an example { xhr.abort(); // 停止请求 } }, complete: function(){ console.log(

  • 自己动手制作基于jQuery的Web页面加载进度条插件

    静态效果的实现 网页顶部加载进度条,近年来很流行,很多网站都采用了这种加载方式.网上也有这样类似的插件,今天我们总结一下网页顶部线性页面加载进度条. 大体的写法如下: body{ margin:0; } #progress { position:fixed; height: 2px; background:#2085c5; transition:opacity 500ms linear } #progress.done { opacity:0 } #progress span { positio

随机推荐