查看完整版本: [-- 求助大侠,新人一枚,QDial搞不懂了 --]

QTCN开发网 -> Qt基础编程 -> 求助大侠,新人一枚,QDial搞不懂了 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

jsk1999199 2017-09-25 21:11

求助大侠,新人一枚,QDial搞不懂了

正在学习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();
}


查看完整版本: [-- 求助大侠,新人一枚,QDial搞不懂了 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled