0

まず、私はQtにかなり慣れていません。私は答えを探しましたが、私の問題に似たものは見つかりませんでした。私は50msごとにタイムアウトするタイマーを使用しています

connect(timer,SIGNAL(timeout()),scene,SLOT(advance()));

回転する長方形(長方形をペイントし、が呼び出されるたびにその座標を変更する自分のクラスadvance)を、で完全な円を描くまでアニメーション化しQGraphicsViewます。

アニメーションが終了するまでにかかる時間を測定する方法はありますか?基本的に、ボタンを押すと、アニメーションが開始され、長方形が円を終了し、そのためにかかった時間を出力する必要があります。QTimeを使って時間を計算できることは知っていますが、信号スロットメカニズムとタイマーを使用しているため、どこに置くかわかりません。ありがとう。

4

1 に答える 1

1

私があなたの質問を正しく理解し、アニメーションを描くのにかかった時間だけを測定しようとしていて、アニメーションを描くのにかかった実際の時間ではない場合、あなたのタスクは非常に簡単です。

タイマーが50ミリ秒ごとにタイムアウトする場合、アニメーションを描画するのにかかったステップ数を数え、それに50ミリ秒を掛けると、完全な時間が得られます。

Advance()関数が毎回一定量のラジアンでステップする場合は、何も計算する必要はありません。どれくらいの時間がかかるかを事前に知っています。次のように簡単に計算できます。

t = StepTime * (2 * pi) / StepAngle

ステップ角がラジアンの場合、または代わりに

t = StepTime * (360)/StepAngle

ステップ角が度単位の場合。

于 2012-04-08T12:45:31.100 に答える