QGraphicsItem не получает события Nover Mouse
-
05-10-2019 - |
Вопрос
У меня есть класс, полученный из QGraphicsView
, который содержит QGraphicsItem
-Дщистые элементы. Я хочу, чтобы эти элементы изменили цвет всякий раз, когда курсор мыши следит за ними, поэтому я реализовал hoverEnterEvent
(а также hoverLeaveEvent
):
void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
update (boundingRect());
}
Однако этот код обработчика событий никогда не выполняется. Я явно включил слежение мыши:
MyGraphicsView::MyGraphicsView(MainView *parent) :
QGraphicsView(parent)
{
setMouseTracking(true);
viewport()->setMouseTracking(true);
...
}
Тем не менее, не повезло. Что я делаю неправильно?
Решение
Починил это. Мне нужно использовать setAcceptHoverEvents(true)
в конструкторе моего QGraphicsItem
-Дщитый класс.
Другие советы
В моем случае события Hover не будут работать, если я переполнению Mousemoveevent в моей реализации Qgraphicsview. сорт. Я исправил это, добавив звонок в
QGraphicsView::mouseMoveEvent(event);
Что распространило событие родителю, которое, в свою очередь, отправила его на все предметы сцены.