Название: Qt 4.3.0 hoverEnterEvent для для ребенка QGraphicsItemGroup Отправлено: mal от Июнь 21, 2007, 11:04 Доброе время суток!
Есть наследник QGraphicsItemGroup (назовем его grp) , в него помещено N элементов, наследников,например, QGraphicsLineItem *p_item. Для группы заданы свойства: grp.setAcceptsHoverEvents(true); grp.setFlag(QGraphicsItem::ItemIsFocusable,true); grp.setHandlesChildEvents(true); для детей группы также заданы свойства: p_item->setAcceptsHoverEvents(true); p_item->setFlag(QGraphicsItem::ItemIsFocusable,true); События void hoverEnterEvent ( QGraphicsSceneHoverEvent * event ); void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event ); переопределены и в классе группы и в классе "айтемов" детей. Однако событие hoverEnterEvent приходит только в объект группы и никак не ловится в его детях. * К примеру: мне надо определить над каким элементом группы находится курсор. Приходиться брать список элементов группы (QList<QGraphicsItem *> QGraphicsItem::children () const ) и далее шариться по списку проверяя не попадает ли курсор в boundingRect соответствующего item'а. Что не есть гуд. * Подскажите, сталкивался ли кто с описаной проблемой, и как ее решал? Т.е. как заставить ребенка группы ловить hoverEnterEvent ? детей группы! добавлено спустя 2 часа: Сам же уже и отвечу ибо разобрался :-) для группы надо установить setHandlesChildEvents(false); тогда она будет принимать сообщения mouseMove от ребенка, но не будет перехватывать hoverEvent'ы и ребенок будет ловить void hoverEnterEvent ( QGraphicsSceneHoverEvent * event ); void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event ); Вопрос с повестки снят ;-) Название: Re: Qt 4.3.0 hoverEnterEvent для для ребенка QGraphicsItemGroup Отправлено: d.rogkov от Июнь 06, 2009, 22:11 Спасибо, что разобрался!
|