Bonjour à tous,
Je cherche à rendre une fonction plus agréable à l'utilisation :
- j'ai un QWidget dans lequel je peint une pixmap ;
- je peut naviguer dans mon widget avec un clique puis un déplacement de souris (si l'image est plus grande que mon widget).
J'ai implémenté un test lors du déplacement de souris qui autorise le déplacement jusqu'au bord de la pixmap, ainsi pas de "scroll" infini et donc pas de risque de perturber l'utilisateur ou de perdre la pixmap.
Mon problème est que, par exemple, si on arrive au max en haut ça bloque le déplacement vers les côtés, ce qui rend le déplacement près des bord de la pixmap "pas très naturel".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void mouseMoveEvent(QMouseEvent *event) { QPointF delta = mDelta + (event->pos() - mReference); QPoint offset = QPoint(mPixmap.size().width() - this->size().width(), mPixmap.size().height() - this->size().height()); if (delta.x() >= 0 - offset.x() && delta.y() >= 0 - offset.y() && delta.x() + mPixmap.size().width() <= this->size().width() + offset.x() && delta.y() + mPixmap.size().height() <= this->size().height() + offset.y()) { mDelta = delta; mReference = event->pos(); update(); } }
Ma réflexion c'est donc comment faire pour rendre tout ça plus "naturel", flexible quoi
Partager