QGraphicsItem - 跟随鼠标光标

时间:2012-03-22 01:10:05

标签: qt animation cursor sprite qgraphicsitem

我坚持如何处理这个问题。我在一个场景中有一个QGraphicsItem,我将一个悬停事件从场景传递给这个孩子。当移动事件发生时(我只是使用带鼠标跟踪的mouseMoveEvent),我希望另一个QGraphicsItem跟随光标。

我不需要任何碰撞检测,拖放等等。只是跟随光标的项目。我能想到的唯一两种方式是......

  1. 当鼠标移动时,在鼠标位置绘制一个新的QGraphicsItem。我需要清除场景,重新绘制所有内容,并在顶部绘制新位置。
  2. 以某种方式使用动画框架,只要鼠标移动,动画QGraphicsItem就会在1毫秒内移动到新的鼠标位置。
  3. 我可能要么过度思考这个,要么不知道另一种方式来做这个......有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我这样做了

  1. 创建将使用鼠标光标移动的GraphicsItem cursor,并将其指针存储在某处(例如,在场景子类中。我有一个工具集,所以对我来说,这是在其中一个工具中)
  2. 设置其Z值(QGraphicsItem::setZValue),以便将光标绘制在场景中所有其他项目的上方
  3. 跟踪QGraphicsScene::mouseMoveEvent个事件,将这些事件转发至cursor指针,并更新项目的位置
  4. 就是这样。 我猜它与你的解决方案1相对应,除了你不需要通过z值特征来清除场景。