Qt 有效地为QGraphicsItem设置动画
我有一个QGraphicsSvgItem,我需要根据进入我的应用程序的外部变量旋转一定数量。目前我正在直接设置项目的旋转属性,但这似乎显著降低了帧速率。(117.0 fps->98.0 fps)这正常吗?这是制作QGraphicsItem动画的正确方法吗?我意识到帧速率听起来很高,但我担心随着视图中的更多项目被设置动画,性能将成为一个问题 下面的代码是通过间隔为0的QTimer超时信号调用的 请注意,我还尝试使用带有自定义QPainterPath的QGraphicsItem而不是SVG来绘制项目,并且没有明显的性能差异Qt 有效地为QGraphicsItem设置动画,qt,animation,svg,qgraphicsitem,Qt,Animation,Svg,Qgraphicsitem,我有一个QGraphicsSvgItem,我需要根据进入我的应用程序的外部变量旋转一定数量。目前我正在直接设置项目的旋转属性,但这似乎显著降低了帧速率。(117.0 fps->98.0 fps)这正常吗?这是制作QGraphicsItem动画的正确方法吗?我意识到帧速率听起来很高,但我担心随着视图中的更多项目被设置动画,性能将成为一个问题 下面的代码是通过间隔为0的QTimer超时信号调用的 请注意,我还尝试使用带有自定义QPainterPath的QGraphicsItem而不是SVG来绘制项目
qreal diff = m_rope_length_ft[0] - m_rope_length_ft_prev[0];
qreal angle = diff * 5.0;
m_rope_reel[0]->setRotation(m_rope_reel[0]->rotation() + angle);
m_rope_reel[1]->setRotation(m_rope_reel[1]->rotation() + angle);
m_rope_reel[0]->update();
m_rope_reel[1]->update();
在Qt中设置动画的更合适的方法是使用。它要求:
- 您的图形项继承自
和QObject
李>QGraphicsSvgItem
已注册为的属性(getter和setter已经存在,因此不需要实现它们)rotation