équivalent — par exemple, mouvement à deux doigts sur un pavé tactile).
L'argument event reçu est un QWheelEvent qui donne les détails de l'action
effectuée.
La valeur de déplacement de la molette est donnée par event.angleDelta().y(),
une valeur qui dépend du type de souris. Elle vaut typiquement +120 pour un
déplacement vers le haut et —120 pour un déplacement vers le bas ; en divisant
cette valeur par 100, on obtient un zoom de +20 % ou −20 %. Ce facteur 100
pourrait bien sûr être adapté pour changer la sensibilité du mouvement ou pour
s'accommoder du type de dispositif (souris ou pavé tactile) ; pour être plus propre,
on pourrait définir ce facteur comme un paramètre de configuration modifiable par
l'utilisateur.
Pour traiter correctement les facteurs de zoom négatifs, on a créé une fonction zoom.
La méthode scale attend un facteur positif (plus grand que 1 si zoom avant, plus
petit que 1 si zoom arrière) ; il faut donc transformer les valeurs négatives de
déplacement de la molette en facteurs positifs plus petits que 1. Pour obtenir une
symétrie entre zoom avant et arrière, on applique la formule -1.0 / facteur. Par
exemple, la valeur −1,2 (zoom arrière) est convertie en 1/1,2, c'est-à-dire 0,8333.
Sans cette opération, on constate que la méthode scale inverse toutes les
coordonnées, ce qui est très déstabilisant.
Après avoir ajouté ces quelques lignes, on peut à présent opérer des zooms dans les
deux sens en tournant la molette de la souris. On peut ainsi agrandir les détails de la
scène et fragmenter en carrés de plus en plus petits.
Figure 12.5 : MosaiQ v0.3 (zooming)
241
L'argument event reçu est un QWheelEvent qui donne les détails de l'action
effectuée.
La valeur de déplacement de la molette est donnée par event.angleDelta().y(),
une valeur qui dépend du type de souris. Elle vaut typiquement +120 pour un
déplacement vers le haut et —120 pour un déplacement vers le bas ; en divisant
cette valeur par 100, on obtient un zoom de +20 % ou −20 %. Ce facteur 100
pourrait bien sûr être adapté pour changer la sensibilité du mouvement ou pour
s'accommoder du type de dispositif (souris ou pavé tactile) ; pour être plus propre,
on pourrait définir ce facteur comme un paramètre de configuration modifiable par
l'utilisateur.
Pour traiter correctement les facteurs de zoom négatifs, on a créé une fonction zoom.
La méthode scale attend un facteur positif (plus grand que 1 si zoom avant, plus
petit que 1 si zoom arrière) ; il faut donc transformer les valeurs négatives de
déplacement de la molette en facteurs positifs plus petits que 1. Pour obtenir une
symétrie entre zoom avant et arrière, on applique la formule -1.0 / facteur. Par
exemple, la valeur −1,2 (zoom arrière) est convertie en 1/1,2, c'est-à-dire 0,8333.
Sans cette opération, on constate que la méthode scale inverse toutes les
coordonnées, ce qui est très déstabilisant.
Après avoir ajouté ces quelques lignes, on peut à présent opérer des zooms dans les
deux sens en tournant la molette de la souris. On peut ainsi agrandir les détails de la
scène et fragmenter en carrés de plus en plus petits.
Figure 12.5 : MosaiQ v0.3 (zooming)
241
