ちょっと - 誰かが将来それを見ている場合に備えて、これをどのように実行して更新したかったのですか?
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結果を取得するだけです。
ありがとうございます - 私はそれを使用してGauge要素の位置を制御したいと思います。私はQt SVGゲージを1つ用意しており、ゲージ針の位置を更新するだけで制御します。私はゲージをオーバーシュートとバウンスを与えることでもう少し現実的に見せたいと思っていました。私はあなたがそこに提案したもので遊んで、私が思いつくことができるものを見ます。 – Matt
'qtsvdialgauge.h'で見たことから、ゲージの実際の値はプロパティではありません(' minimum'、 'maximum'、' startAngle'と 'endAngle'はすべてプロパティですから少し奇妙に思えます)。 。)したがって、 'QPropertyAnimation'を使ってアニメーション化することはできません...あなたはあなた自身でそれをアニメーション化しなければならないでしょう。 –