Qt自定义控件实现线条型加载条

所属分类: 软件编程 / C 语言 阅读数: 69
收藏 0 赞 0 分享

本文实例为大家分享了Qt自定义控件实现线条型加载条的具体代码,供大家参考,具体内容如下

上效果图:

思路:先画一个线条,然后旋转坐标系再画其他线条,突出颜色的线条可以画死再旋转,也可以按照角度递增让特定线画突出颜色(这里使用的是这种)。

LoadingBarA::LoadingBarA(QWidget *parent) :
  QWidget(parent)
{
  timer = new QTimer(this); //定时器
  timer->setInterval(50);
  connect(timer,QTimer::timeout,this,[=](){
    if(pointRect<=rectCount){
      pointRect++;
    }else{
      pointRect = pointRect%rectCount;
    }
    update();
  });
}

void LoadingBarA::paintEvent(QPaintEvent *event){ //重绘事件
  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);

  float degree = 360.0/rectCount; //rectCount:共有多少根线条

  for(int i =0;i<rectCount;i++){
    painter.rotate(degree);
    if(i == pointRect - 1){
      drawRect(&painter,darkColor); //突出颜色
    }else{
      drawRect(&painter,lightColor);//非突出颜色
    }
  }
}

void LoadingBarA::drawRect(QPainter* painter,QColor color){//画线条
  painter->save();
  painter->setPen(Qt::NoPen);
  painter->setBrush(color);
  QRect rect(arcLength,-rectHeight/2,rectWidth,rectHeight);
  painter->drawRoundedRect(rect,rectHeight/2,rectHeight/2);
  painter->restore();
}

void LoadingBarA::setDarkColor(QColor tempColor){
  this->darkColor = tempColor;
  update();
}

void LoadingBarA::setLightColor(QColor lightColor){
  this->lightColor = lightColor;
  update();
}

void LoadingBarA::setRectWidth(int l){
  this->rectWidth = l;
  update();
}

void LoadingBarA::setRectHeight(int l){
  this->rectHeight = l;
  update();
}

void LoadingBarA::setArcLength(int l){
  this->arcLength = l;
  update();
}

void LoadingBarA::setRectCount(int l){
  this->rectCount = l;
  update();
}

void LoadingBarA::startLoading(){ //设置开始
  timer->start();
}

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

更多精彩内容其他人还在看

利用C语言来求最大连续子序列乘积的方法

这篇文章主要介绍了利用C语言来求最大连续子序列乘积的方法,基本的思路以外文中还附有相关ACM题目,需要的朋友可以参考下
收藏 0 赞 0 分享

用C语言判断一个二叉树是否为另一个的子结构

这篇文章主要介绍了用C语言判断一个二叉树是否为另一个的子结构,是数据结构学习当中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现的阶乘,排列和组合实例

这篇文章主要介绍了C语言实现的阶乘,排列和组合的方法,涉及C语言数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言查找数组里数字重复次数的方法

这篇文章主要介绍了C语言查找数组里数字重复次数的方法,涉及C语言针对数组的遍历与判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言简单实现计算字符个数的方法

这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

c实现linux下的数据库备份

本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

C++获得文件状态信息的方法

这篇文章主要介绍了C++获得文件状态信息的方法,包括文件状态信息、文件所在磁盘盘符、文件创建时间、访问时间及修改日期等,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言按关键字搜索文件夹中文件的方法

这篇文章主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言之字符串模糊查询方法的实现

本篇文章主要为大家介绍字符串模糊查询的C语言程序编写方法,有需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现BMP转换JPG的方法

这篇文章主要介绍了C语言实现BMP转换JPG的方法,涉及C#图片格式转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多