Bonjour, j'ai un souci pour intercepter un wheelEvent sur un QGraphicsItem personnalisé.
Grosso modo j'ai des items qui sont des cercles, et je voudrais en modifier le rayon d'un coup de molette. Le problème c'est que je ne rentre jamais dans le wheelEvent. Aucun probleme pour le mouseMoveEvent ou le contextMenuEvent qui se comportent comme attendu.
Je vous mets le code du wheelEvent
J'ai également un wheelEvent au niveau de la QGraphicsView
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 void GDomain::wheelEvent(QGraphicsSceneWheelEvent* event) { double rfact(1.1); //si on a un domaine circulaire if (/*circular && */event->modifiers() == Qt::ControlModifier) { std::cout << "enter wheel event" << std::endl; event->accept(); if (event->delta() > 0) { rayon *= rfact; } else { rayon /= rfact; } domaine->setRadius(rateAmort(), typeAmort(), xc, yc, rayon); moveGraphicsItems(); } else { event->ignore(); } QGraphicsObject::wheelEvent(event); }
Pas de problème ici non plus, mon zoom se fait bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void GraphicsView::wheelEvent( QWheelEvent* event ) { setTransformationAnchor(QGraphicsView::AnchorUnderMouse); if (event->modifiers() == Qt::NoModifier) { event->accept(); if (event->delta() > 0) zoomIn(); else zoomOut(); } else { event->ignore(); } }
Je me demandais si c'était pas justement la vue qui empêchait l'event de se propager à l'item mais à ce que j'ai compris ça se passe dans l'autre sens : si aucun item n'intercepte l'event, il est ignoré par la scene et transmis à la vue.
Est-ce-que quelqu'un aurait une idée de ce qui se passe ?
Partager