Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 在Qt中设置围绕屏幕移动的圆动画的最佳方法?_User Interface_Qt_Animation - Fatal编程技术网

User interface 在Qt中设置围绕屏幕移动的圆动画的最佳方法?

User interface 在Qt中设置围绕屏幕移动的圆动画的最佳方法?,user-interface,qt,animation,User Interface,Qt,Animation,如果我想,使用Qt,简单地让一些圆在一个白色框或图形中移动,那么最好的方法是什么 我是否需要在圆圈每次移动的位置后面绘制白色/图形?在Qt中有没有一种简单的方法来实现这一点?子类QWidget。启动timerEvent()以设置圆圈位置的动画,然后在末尾调用update()以安排小部件的重新绘制。覆盖小部件的paintEvent()-在其中使用QPaint对象绘制背景和圆圈。Qt助手提供了如何使用QPaint的示例 Qt也有一个新的动画框架,可以促进类似的事情,但我还没有研究它 在小部件中创建Q

如果我想,使用Qt,简单地让一些圆在一个白色框或图形中移动,那么最好的方法是什么


我是否需要在圆圈每次移动的位置后面绘制白色/图形?在Qt中有没有一种简单的方法来实现这一点?

子类QWidget。启动timerEvent()以设置圆圈位置的动画,然后在末尾调用update()以安排小部件的重新绘制。覆盖小部件的paintEvent()-在其中使用QPaint对象绘制背景和圆圈。Qt助手提供了如何使用QPaint的示例

Qt也有一个新的动画框架,可以促进类似的事情,但我还没有研究它

  • 在小部件中创建QGraphicsView对象,并在视图中添加QGraphicsCenter
  • 将QGraphicsSellipseitem添加到场景
  • 使用QPropertyImation更改椭圆项的“位置”属性
  • 如果需要更高级的功能,可以在QPropertyAnimation上构建自己的动画类

    享受吧:)


    更新:您可以阅读更多信息。

    所以我们每次都必须重新绘制背景?是的,非常确定,但是如果您需要效率,可能需要一些解决方法。我在paintEvent中做了很多自定义绘图,它总是非常快。使用Qt Graphics Framework,您不需要处理这些低级操作。看我下面的回复。很酷,谢谢梅森。很高兴知道。我还没有进入框架的这一部分。嗨,使用属性动画,我怎样才能像画圆一样给圆设置动画。我正在设计一个计时器,所以我需要直观地显示它。你能告诉我怎么做吗?不要长时间使用Qt。不知道最新的Qt是如何处理的。您检查过QPropertyImation的文件了吗?哦,好的,谢谢。我现在做的是,在paint()中,我使用drawArc()API进行更新,以显示旋转的圆(实际上,它是一个计时器)。是否可以使用属性动画执行此操作?因为在属性动画中,据我所见,对象本身的位置发生了变化,动画设置了持续时间,这不符合我的需要。