2012-04-08 66 views
0

首先,我对Qt相当陌生。我确实在寻找答案,但没有发现任何类似于我的问题。我使用的超时每50ms定时器和计算动画时间Qt

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

动画盘旋矩形(我自己的类来绘制矩形,每个advance被调用时改变其坐标),直到它在QGraphicsView了一整圈。

有什么方法可以测量动画完成所花费的时间吗?基本上,我按下按钮,动画开始,矩形完成圆圈,我需要输出它花费的时间。我知道我可以使用QTime来计算时间,但我不明白在哪里放置它,因为它使用信号插槽机制和计时器。谢谢。

回答

1

如果我正确理解您的问题,并且您只是试图测量绘制动画的时间,而不是绘制动画的时间,那么您的任务非常简单。

如果定时器每隔50毫秒超时,那么如果您计算您为动画绘制所需的步骤数,并将其乘以50ms,那么您就有完整的时间。

如果您的advance()函数每次按照固定的弧度量步进,那么您不需要计算任何东西。你事先知道需要多少时间。它可以很容易地计算为这样:

t = StepTime * (2 * pi)/StepAngle 

如果步距角为以弧度为单位,或可替代地

t = StepTime * (360)/StepAngle 

如果步距角以度为单位。

+0

感谢您的回复!我确实需要实际的时间,因为我试图比较它在不同PC上的表现(只是我被要求做一个任务的一部分)。据我了解,由于我选择实现动画的方法,时间将会非常接近(我猜这样做对我的情况有更好的方式,但这种方法似乎是最简单的)米甚至不知道我怎么能得到那些时间。 – Urdak 2012-04-08 15:03:41

+0

http://doc.qt.nokia.com/4.7-snapshot/qtestlib-tutorial5.html;) – Castilho 2012-04-08 17:16:06