[Interest] hover events on graphics scene
Ruth Ivimey-Cook
ruth at ivimey.org
Thu Jun 20 20:42:45 CEST 2013
Hi
It was suggested that I ask about this here.
I have a graphics scene and want to monitor hover events for the items
in the scene, but they're not getting through. I've debugged the code
and the problem appears to be that I'm using a layered structure with
items having child items. So:
GraphicsScene ---+ GroupItem ---+ GraphicsItem(s)
| | GraphicsItem(s)
| \ GraphicsItem(s)
|
+ GroupItem ---+ GraphicsItem(s)
| | GraphicsItem(s)
| \ GraphicsItem(s)
|
+ GroupItem ---+ GraphicsItem(s)
| GraphicsItem(s)
\ GraphicsItem(s)
I create this structure by making a group event, adding children to it,
then adding the group to the scene. There are typically thousands of
graphics items in each group, and I group them so that (a) the z-order
of each group and hence each item is consistent, and (b) so that I can
recreate, hide and show groups without needing a total redraw. In the
real code, there are about 8 groups in all.
It appears that the reason things don't get hover events is the code
that looks to see if such events need reporting isn't recursive down the
layers ( I think) but just looks at the item being added to the scene.
But if you enable hover events on the parent (group) item, so that when
the GraphicsItems are added to it the hover event flag is set, its
(only) the parent group that gets the events.
If the hover event code is thus enabled, and matches more than one item
at a pixel location (i.e. there are several things at the same place on
the screen) then only the first in the list seems to get the event -
hence only the group getting events.
A group item doesn't have a graphical appearance so IMO shouldn't ever
receive hovers... though perhaps that's up for debate. I'd certainly
like for the groups to ignore hovers and only have items see them.
Any thoughts?
Ruth
--
Software Manager & Engineer
Tel: 01223 414180
Blog: http://www.ivimey.org/blog
LinkedIn: http://uk.linkedin.com/in/ruthivimeycook/
More information about the Interest
mailing list