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(); }
|
|