wheelEvent sur un QGraphicsItem
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
Code:
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);
} |
J'ai également un wheelEvent au niveau de la QGraphicsView
Code:
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();
}
} |
Pas de problème ici non plus, mon zoom se fait bien.
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 ?