Qt GraphicsView mouseMoveEvent, затенение GraphicsItem mouseMoveEvent

У меня проблемы с перегрузкой mouseMoveEvent.

У меня есть подкласс QGraphicsView и перегружены mousePressEvent, mouseMoveEvent и mouseReleaseEvent. Я использую эти события, чтобы нарисовать пользовательский QGraphicsItem - Line. (mousePress - устанавливает начальную точку линии, mouseMove заставляет линию следовать за курсором, вторая mousePress устанавливает конечную точку линии, а mouseRelease останавливает рисование линии.)

Я также создал еще один пользовательский элемент - Node. Узел рисуется с помощью события mousePress. У меня есть 2 флага, чтобы различать рисование линий и узлов. Флаг ItemIsMovable узла установлен в true, и я переопределил mouseMoveEvent в классе Node, чтобы заставить его двигаться (я изменяю его координаты и перерисовываю его. И он работал нормально.)

Проблема в том, что когда я реализовал mouseMoveEvent в моем подклассе QGraphicsView(для рисования Линии), mouseMoveEvent класса Node перестал работать, и Узлы больше не перемещаются. Как я могу это исправить?

Спасибо за ваше время, ваша помощь будет оценена.

1 ответ

Решение

Вам нужно позвонить в базовый класс (QGraphicsView) реализация от вашей реализации. В противном случае события мыши не будут обрабатываться QGraphicsView и не будут переданы на сцену и ее предметы.

void MyView::mousePressEvent(QMouseEvent* e) {
  QGraphicsView::mousePressEvent(e);
  //your implementation
}
Другие вопросы по тегам