Qt - 将QEasingCurve的输出用于除动画之外的其他内容

时间:2011-01-17 13:15:57

标签: c++ qt

我想知道是否有人可以提供帮助。

例如,如果我想将QEasingcurve的输出用于驱动QAnimation之外的其他目的,这可能吗?例如,如果我在我的GUI上读取了一个我希望增长的数字,过冲并反弹到位,我可以将QEasing曲线用于此目的吗?

我已经使用了Qt很长一段时间但从未涉足过它的任何部分 - 我正在尝试解决它但不能,所以我想在这里问。

2 个答案:

答案 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结果拉到新位置。