我在重载mouseMoveEvent时遇到了麻烦。
我已经将QGraphicsView子类化并重载了mousePressEvent,mouseMoveEvent和mouseReleaseEvent。我正在使用这些事件来绘制一个自定义QGraphicsItem - 这是一个Line。 (mousePress - 设置行的起点,mouseMove使行跟随光标,第二个mousePress设置行的终点,mouseRelease停止绘制行。)
我还创建了另一个自定义项 - Node。使用mousePress事件绘制节点。我有2个标志来区分绘制线和节点。 Node的ItemIsMovable标志设置为true,我在Node类中重新实现了mouseMoveEvent以使其移动(我更改其坐标并重新绘制它。它工作正常。)
问题是 - 当我在QGraphicsView的子类中实现mouseMoveEvent时(用于绘制Line) - Node类的mouseMoveEvent停止工作并且节点不再移动。我怎样才能解决这个问题?
感谢您的时间,感谢您的帮助。
答案 0 :(得分:3)
您需要从实现中调用基类(QGraphicsView
)实现。否则,QGraphicsView
将不会处理鼠标事件,也不会将其传递给场景及其项目。
void MyView::mousePressEvent(QMouseEvent* e) {
QGraphicsView::mousePressEvent(e);
//your implementation
}