2

已经有关于此的线程,但我能找到的解决方案不起作用。解决办法:写QGraphicsView::MousePressEvent(event);在我的MousePressEvent类的QGraphicsView派生类的最后。两者都不起作用。QGraphicsItem 类不接收鼠标事件。这是我的 QGraphicsView 类中的 MousePressEvent:

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);
}

这是我的 QGraphicsItem 类中的 MousePressEvent:

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

任何想法,我忘记了什么?

4

1 回答 1

0

回答永远不要忘记打电话

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

在您在 QGraphicsView 派生类中覆盖的每个 mouseEvent 结束时(在 mouseMoveEvent 中使用 QGraphicsView::mouseMoveEvent(event) 等等)。否则可能会发生真正奇怪的事情。此外,如果您甚至没有在 QGraphicsItem 派生类中使用其中的一些,请在每个事件中调用它。

于 2017-08-13T10:42:49.163 回答