QGraphicsItem не получает события наведения мыши - PullRequest
17 голосов
/ 31 мая 2010

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

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

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

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

Все-таки не повезло. Что я делаю не так?

Ответы [ 2 ]

26 голосов
/ 31 мая 2010

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

2 голосов
/ 21 декабря 2016

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

QGraphicsView::mouseMoveEvent(event);

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

...