Вопрос

У меня есть класс, полученный из 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);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top