欢迎来到工商注册核名查询系统!

C语言

当前位置:主页 > 软件编程 > C语言 >

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

来源:本站原创|时间:2022-11-25|栏目:C语言|

本文实例为大家分享了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语言

您可能感兴趣的文章

阅读排行

本栏相关

随机阅读

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 工商注册核名查询系统 版权所有