Bonjour, je cherche l'équivalent de mouseDragged (clic + deplacement) pour Qt.
J'ai bien cherché partout dans la doc, je ne le trouve pas.
Peut être n'est il pas implémenté par défaut?
Merci
Version imprimable
Bonjour, je cherche l'équivalent de mouseDragged (clic + deplacement) pour Qt.
J'ai bien cherché partout dans la doc, je ne le trouve pas.
Peut être n'est il pas implémenté par défaut?
Merci
Si tu définis setMouseTracking en false, l'event mouseMoveEvent ne sera appelé que s'il y a lieu de clic sur la souris, en même temps qu'un mouvement.
J'ajouterai que le mouseTracking est disabled (= false) par défaut, donc utiliser mouseMoveEvent sans changer sa valeur équivaut à mouseDragged (clic + deplacement).
G.
Bonjour,
héhé justement, j'utilise déjà cette fonctonnalité pour récupérer constament la position du curseur, via mouseMoveEvent (ces coordonnées me permette de savoir si je pointe sur un Point(classe perso)),
je met donc MouseTracking à true.
Il faudrait donc que je trouve un autre moyen de capturer constament la position du curseur et redessiner la totalité du graphe (soit dit en passant, la méthode que j'utilise est brut, je le reconnais)
Mon mouseMoveEvent
J'attend vos réactions. :ccool:Code:
1
2
3 point_courrant = (get la pos du curs); repaint();
cursor().pos() retourne un QPoint de la position actuelle du curseur. Dans le cadre d'un évènement dont le paramètre est un QMouseEvent, eventUtilise->pos() retournera la position du curseur lors de l'évènement.
D'accord, mais ce n'est pas parfait.
En effet, j'utilisais également mouseMoveEvent car il me permettait de redesciner a chaque mouvement, et de changer la couleur d'un point si je le pointais (je fais le test dans paint et adapte la couleur).
Il me faudrait donc une fonction qui capte mes mouvements, et fasse le repaint, autre que mouseMoveEvent...je ne dois pas bien utiliser la doc :roll:
un peu galère..
je trouve cela étrange, j'espère que je passe à coté de quelque chose, car avoir de problèmes pour si peu c'est dommage...(first application in Qt)
Pour ma part je te conseillerai d'utiliser update() plutôt que repaint() car le repaint() appelle directement le paintEvent et s'il est fait trop de fois successivement je pense que ça peut poser problème alors que l'update() s'il est appelé plusieurs fois successivement c'est optimisé (en gros si tu mets 40 update() de suite dans ton code un seul sera appelé alors que 40 repaint() appelleront bien 40 fois la méthode paint), extrait de la doc de "void QWidget::repaint() [slot]":
Après je ne vois pas d'autre moyen que le mouseMoveEvent() pour capturer les mouvements souris.Citation:
Repaints the widget directly by calling paintEvent() immediately, unless updates are disabled or the widget is hidden.
We suggest only using repaint() if you need an immediate repaint, for example during animation. In almost all circumstances update() is better, as it permits Qt to optimize for speed and minimize flicker.
G.
ok, et bien je vais simplifier mon interface... déçus par Qt à vrai dire, je ne vois pas pourquoi ils ont "regroupé" ces fonctionnalités en une fonction, obligeant d'utiliser l'une ou l'autre mais pas les deux en même temps ...
Je vais voir si je peux séparer ces deux fonctionnalitées, je ne met pas résolu tous de suite, des fois que quelqu'un ait une idée.
je ne vois pas quel est le but de séparer un MouseMoveEvent d'un MouseDragged ?!
Sachant que le second est équivalent au premier auquel on rajoute la condition "clic gauche maintenu".
Un simple test de ce clic gauche dans le MouseMoveEvent permet de "distinguer" ces 2 évènements
Merci :ccool: tu m'as bien mis sur la voie cette fois ci, et j'ai ainsi trouvé cela dans le doc :Citation:
je ne vois pas quel est le but de séparer un MouseMoveEvent d'un MouseDragged ?!
Sachant que le second est équivalent au premier auquel on rajoute la condition "clic gauche maintenu".
Un simple test de ce clic gauche dans le MouseMoveEvent permet de "distinguer" ces 2 évènements
http://qt.developpez.com/doc/latest/...-scribble.html
Un peu de bidouille et ça fonctionne.
MERci, close