我有两个继承QGraphicsItem的不同类。它们都有特定的mousePressEvent函数。当这些项目在场景上重叠时,我只想执行其中一个项目的mousePressEvent。我该如何实现?

void PpiTargetItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) {
    mTargetColor = Qt::red;
    event->setAccepted(true);
}

// Bigger Item
void CriticalRegion::hoverEnterEvent(QGraphicsSceneHoverEvent *event) {
    LOGGER_START
    mCorners[0] = new CornerGrabber(this, 0);
    mCorners[1] = new CornerGrabber(this, 1);
    mCorners[2] = new CornerGrabber(this, 2);
    mCorners[3] = new CornerGrabber(this, 3);

    mCorners[0]->installSceneEventFilter(this);
    mCorners[1]->installSceneEventFilter(this);
    mCorners[2]->installSceneEventFilter(this);
    mCorners[3]->installSceneEventFilter(this);

    setCornerPositions();
    event->setAccepted(true);
    LOGGER_END
}

最佳答案

当您从QGraphicsItem继承并实现该功能时

void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent * event)

当想要处理事件的对象这样做时,调用 event-> accept()
如果这对您不起作用,请在示例中添加示例代码。

10-04 14:47