我想知道是否有人可以提供帮助。
例如,如果我想将QEasingcurve的输出用于驱动QAnimation之外的其他目的,这可能吗?例如,如果我在我的GUI上读取了一个我希望增长的数字,过冲并反弹到位,我可以将QEasing曲线用于此目的吗?
我已经使用了Qt很长一段时间但从未涉足过它的任何部分 - 我正在尝试解决它但不能,所以我想在这里问。
答案 0 :(得分:2)
我不确定我是否理解你要显示的内容,但据我所知,使用QPropertyAnimation
可能是最佳选择。
但是,要回答您的问题,您当然可以独立使用QEasingCurve
,只需使用valueForProgress(qreal progress)
成员函数。
答案 1 :(得分:1)
void RPM::updateGauge(float speed)
{
easing = new QEasingCurve(QEasingCurve::OutElastic);
easing->setAmplitude(1.0);
currentPosition = (float)ui->svgdial_currentSpeed->value();
newPosition = speed;
difference = newPosition - currentPosition;
interval = 0.0;
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(doGaugeMovement()));
timer->start(60);
}
void RPM::doGaugeMovement()
{
interval+=0.01;
ui->svgdial_currentSpeed->setValue(currentPosition + ( difference * easing-
>valueForProgress( interval ) ) );
if(interval >= 1.0)
{
timer->stop();
}
}
只需使用计时器缓慢更新仪表,每次都将valueForProgress结果拉到新位置。