Qt GraphicsView mouseMoveEvent阴影GraphicsItem mouseMoveEvent

时间:2013-10-21 18:52:21

标签: c++ qt qgraphicsview qgraphicsitem qgraphicsscene

我在重载mouseMoveEvent时遇到了麻烦。

我已经将QGraphicsView子类化并重载了mousePressEvent,mouseMoveEvent和mouseReleaseEvent。我正在使用这些事件来绘制一个自定义QGraphicsItem - 这是一个Line。 (mousePress - 设置行的起点,mouseMove使行跟随光标,第二个mousePress设置行的终点,mouseRelease停止绘制行。)

我还创建了另一个自定义项 - Node。使用mousePress事件绘制节点。我有2个标志来区分绘制线和节点。 Node的ItemIsMovable标志设置为true,我在Node类中重新实现了mouseMoveEvent以使其移动(我更改其坐标并重新绘制它。它工作正常。)

问题是 - 当我在QGraphicsView的子类中实现mouseMoveEvent时(用于绘制Line) - Node类的mouseMoveEvent停止工作并且节点不再移动。我怎样才能解决这个问题?

感谢您的时间,感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您需要从实现中调用基类(QGraphicsView)实现。否则,QGraphicsView将不会处理鼠标事件,也不会将其传递给场景及其项目。

void MyView::mousePressEvent(QMouseEvent* e) {
  QGraphicsView::mousePressEvent(e);
  //your implementation
}