IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Equivalent de mouseDragged


Sujet :

Qt

  1. #1
    Membre éclairé Avatar de mensoif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut Equivalent de mouseDragged
    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

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    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.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut
    J'ajouterai que le mouseTracking est disabled (= false) par défaut, donc utiliser mouseMoveEvent sans changer sa valeur équivaut à mouseDragged (clic + deplacement).

    G.

  4. #4
    Membre éclairé Avatar de mensoif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    point_courrant = (get la pos du curs);
    repaint();
    J'attend vos réactions.

  5. #5
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    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.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  6. #6
    Membre éclairé Avatar de mensoif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    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

    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)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut
    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]":
    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.
    Après je ne vois pas d'autre moyen que le mouseMoveEvent() pour capturer les mouvements souris.

    G.

  8. #8
    Membre éclairé Avatar de mensoif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    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.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    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

  10. #10
    Membre éclairé Avatar de mensoif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    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 tu m'as bien mis sur la voie cette fois ci, et j'ai ainsi trouvé cela dans le doc :

    http://qt.developpez.com/doc/latest/...-scribble.html

    Un peu de bidouille et ça fonctionne.

    MERci, close

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2002, 09h12
  2. equivalent à explode?
    Par djridou dans le forum Langage
    Réponses: 3
    Dernier message: 28/08/2002, 11h01
  3. [Kylix] Equivalent ShellExec en CLX
    Par Anonymous dans le forum EDI
    Réponses: 7
    Dernier message: 14/08/2002, 11h55
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. [Kylix] equivalent winsock avec kylix
    Par Victor dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 07h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo