QGraphicsItem не получает события наведения мыши

У меня есть класс, полученный из QGraphicsView, который содержит элементы QGraphicsItem. Я хочу, чтобы эти элементы меняли цвет всякий раз, когда курсор мыши нависал над ними, поэтому я реализовал hoverEnterEventhoverLeaveEvent):

void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
    update (boundingRect());
}

Однако этот код обработчика событий никогда не выполняется. Я явно включил отслеживание мыши:

MyGraphicsView::MyGraphicsView(MainView *parent) :
    QGraphicsView(parent)
{
    setMouseTracking(true);
    viewport()->setMouseTracking(true);
    ...
}

Тем не менее, не повезло. Что я делаю неправильно?

Ответы

Ответ 1

Исправлено. Мне нужно использовать setAcceptHoverEvents(true) в конструкторе моего класса QGraphicsItem -derived.

Ответ 2

В моем случае события hover не будут работать, если я переопределяю mouseMoveEvent в моей реализации класса QGraphicsView. Я исправил это, добавив вызов

QGraphicsView::mouseMoveEvent(event);

который передал событие родительскому объекту, который, в свою очередь, отправил его всем элементам сцены.