处理mousePressEvent以重叠图形项目

时间:2013-09-17 12:47:09

标签: c++ qt qgraphicsitem

我有两个继承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

}

2 个答案:

答案 0 :(得分:1)

从QGraphicsItem继承并实现函数

void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent * event)

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

答案 1 :(得分:0)

1-设置Grpahics的zValue 2-通过致电接受事件: 事件->接受()

并且不要调用基类事件:

关键区域:: hoverEnterEvent(事件)