Как получать события мыши в производном классе QGraphicsItem? Qt

Об этом уже есть темы, но решение, которое я смог найти, не работает. Решение: написание QGraphicsView::MousePressEvent(event); в конце моего класса MousePressEvent в производном классе QGraphicsView. Оба не работают. QGraphicsItem-класс не получает события мыши. Это мой MousePressEvent в моем классе QGraphicsView:

void GraphWidget::mousePressEvent(QMouseEvent *event){
    mousePressed = true;

    if (event->button() == Qt::RightButton) // doesn't matter
    {
        rightMousePressed = true;
        _panStartX = event->x();
        _panStartY = event->y();
        setCursor(Qt::ClosedHandCursor);
        event->accept();
        return;
    }

    // And I tried this: QGraphicsView::mousePressEvent(event);
}

Это мой MousePressEvent в моем классе QGraphicsItem:

void Node::mousePressEvent(QGraphicsSceneMouseEvent *event){
    mousePressed = true;
    qDebug() << "mouse trigered!";
}

Есть идеи, что я забыл?

1 ответ

ОТВЕТ Никогда не забывайте звонить

QGraphicsView::mousePressEvent(event); /
QGraphicsView::mouseReleaseEvent(event); /
QGraphicsView::mouseMoveEvent(event);
...

в конце каждого mouseEvent вы переопределяете в своем производном классе QGraphicsView (в mouseMoveEvent используйте QGraphicsView::mouseMoveEvent(event) и так далее). Иначе могут случиться действительно странные вещи. Также, если вы даже не использовали некоторые из них в своем производном классе QGraphicsItem, вызывайте его в каждом событии.

Другие вопросы по тегам