【问题标题】:Why QGraphicsScene::advance() doesn't repaint my item?为什么 QGraphicsScene::advance() 不重新绘制我的项目?
【发布时间】:2012-06-20 13:35:18
【问题描述】:

我正在尝试在 QGraphicsView 中移动精灵。我用:

connect(timer, SIGNAL(timeout()), scene, SLOT(advance()));
timer->start(1000/33);

但我的精灵没有重新绘制。我必须使用 alt-tab 来更新视图。

【问题讨论】:

    标签: qt qgraphicsview


    【解决方案1】:

    在第一阶段,所有项目都被通知场景即将改变,在第二阶段,所有项目都被通知他们可以移动。

    文档暗示这是一个场景项目的动画通知工具,它没有说明实际更新视图。您可能需要将QTimer::timeout() 信号连接到QGraphicsScene::update() 插槽。

    【讨论】:

    • 谢谢。 update() 修复了问题,但太多的 update() 会减慢游戏速度。我也会尝试解决这个问题。
    【解决方案2】:

    类似于this (QGraphicsScene is missing a particular item update),您只需使场景中的对象无效,并让场景负责更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 2016-06-27
      • 2011-10-20
      • 1970-01-01
      相关资源
      最近更新 更多