• 3446阅读
  • 0回复

[提问]求助大侠,新人一枚,QDial搞不懂了 [复制链接]

上一主题 下一主题
离线jsk1999199
 

只看楼主 倒序阅读 楼主  发表于: 2017-09-25
关键词: 求助界面新手
正在学习qt,c基础0,在ui里放一个widget(提升为CBv类),一个Dial,想转动Dial,widget里画的类似进度条的图形也随着Dial值的改变前进或后退。最下面的那两段代码是抄刘大神的,可是出来的效果是drawdial一直在前进,即使Dial后退了也在前进,但不提升类的话,直接都写在widget里就正常,哪位大神帮帮忙啊,这要怎么改啊,感谢
void Widget::on_dial_sliderMoved(int position){
   QString s = QString::number(position, 10);
   double curren=s.toDouble();
    //qDebug()<<currentPercent;
ui->widget1->updateValue(curren);
    this->update();
}
void CBv::updateValue(int currentvalue){
     currentvalue = currentPercent * ((maxValue - minValue) / 100) + minValue;
       currentPercent ++;
       update();
}
void CBv::drawDial(QPainter *painter)
{
    int radius = 95;
    double lineWidth = 5;
    painter->save();
    painter->rotate(angle);
    //根据起始旋转的角度计算每次坐标需要旋转的角度,按照100等分计算
    //每次旋转的角度=360-(起始角度*2--分左右)/100
    double rotate = (double)(360 - (angle * 2)) / 100;
    //绘制已使用百分比
    painter->setPen(QPen(usedColor, lineWidth));
    for (double i = 0; i < currentPercent; i++) {
        painter->drawLine(0, radius, 0, radius / 1.2);
         painter->rotate(rotate);
    }
    //绘制未使用百分比
     painter->setPen(QPen(freeColor, lineWidth));
     for (double i = currentPercent; i < 100; i++) {
        painter->drawLine(0, radius, 0, radius / 1.2);
        painter->rotate(rotate);
    }
//this->update();
    painter->restore();
}
快速回复
限100 字节
 
上一个 下一个