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
}