【发布时间】:2020-07-08 20:24:50
【问题描述】:
我有两个不同的类继承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
}
【问题讨论】:
-
有一个接受事件
-
顺便说一句,其中一个项目中有一个 sceneEventFilter()(没有 mousePressEvent 函数),我认为它可能会阻止另一个项目接受 mousePress 事件。
标签: c++ qt qgraphicsitem