I have a subclass of QGraphicsView and several subclasses of QGraphicsItem. I want different menus to appear when right-clicking on the different kinds of items and when right-clicking on the background of the view.

I have overrides for "void QGraphicsItem::contextMenuEvent(QGraphicsSceneCont extMenuEvent *event)" in my items and that works just fine. When I override "void QGraphicsView::contextMenuEvent(QContextMenuEvent *event)" in my view, I call QGraphicsView's implementation to propagate the event to the items.

How can I tell whether any of the items handled the event? I see this documentation for QGraphicsItem:
"If you ignore the event, (i.e., by calling QEvent::ignore(),) event will propagate to any item beneath this item. If no items accept the event, it will be ignored by the scene, and propagate to the view."

That's the behavior I want, but how is the event propagated to the view? The event has already occurred on the view (the standard QWidget contextMenuEvent). I tried checking the isAccepted flag on the QContextMenuEvent, but it seems to always be set to true once QGraphicsView's contextMenuEvent method is called.

I have a work-around, but I'd like to use the built-in event propagation, if possible.

Any ideas?