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 :

Récupérer <<position Souris>> d'un QGraphicsScene [Graphics View]


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 88
    Par défaut Récupérer <<position Souris>> d'un QGraphicsScene
    Bonjour à tous,
    Depuis quelques temps je sèche sur un truc
    En faite j'aimerais récupérer la position des pixels , d'une image qui se trouve dans la scene (QGraphicsScene) , et cela en bougeant tout simplement la souris .Sans maintenir le bouton appuyer.
    Le problème ce que QGraphicsScene ne dispose pas de l'option setMouseTracking !!
    Vous sauriez une méthode qui peut détourné ça !
    Remarque Avec la méthode mouseMoveEvent(QGraphicsSceneMouseEvent *qevent) ça marche trés bien , sauf que je dois maintenir le bouton enfoncé .
    Merci d'avance

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Je n'ai pas essayé, mais il est indiqué dans la doc de QMouseEvent (http://qt.developpez.com/doc/latest/...t.html#details) que le suivis de la souris n'est actif (par défaut) que lorsque l'on clique avec la souris :
    Mouse move events will occur only when a mouse button is pressed down, unless mouse tracking has been enabled with QWidget::setMouseTracking().
    Pour activer le suivis sans clique, il faut mettre la propriété mouseTracking à true(http://qt.developpez.com/doc/latest/...etracking-prop)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setMouseTracking(true);
    EDIT: Attention, QGraphicsScene n'est pas un objet "graphique" (il dérive de QObject et prend en charge la gestion des objets graphiques). C'est QGraphicsView qui récupère le suivis de la souris

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 88
    Par défaut
    Merci de m'avoir répondu .
    Oui ce que tu dis n'est pas faux.
    Mais dans mon cas mon image est sur une classe QGraphicsScene , qui n'hérite pas de Widget .Donc pas possible d'activer le setMouseTracking
    En plus elle utilise QGraphicsSceneMouseEvent et non pas QMouseEvent

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par doukha Voir le message
    Merci de m'avoir répondu .
    Oui ce que tu dis n'est pas faux.
    Mais dans mon cas mon image est sur une classe QGraphicsScene , qui n'hérite pas de Widget .Donc pas possible d'activer le setMouseTracking
    En plus elle utilise QGraphicsSceneMouseEvent et non pas QMouseEvent
    Il suffit que tu mettes ta QGraphicsScene dans une QGraphicsView et tu récupére ton event comme ça. C'est fait pour ça :

    The QGraphicsView class provides a widget for displaying the contents of a QGraphicsScene.
    Constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QGraphicsView  ( QGraphicsScene * scene, QWidget * parent = 0 )

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 88
    Par défaut
    Bien entendu ma scène est situé dans dans QGraphicsView!
    Mais je voulais éviter de passer par le qGraphicsView de peur qu'il me donne pas les bon coordonnées de mon image, que je rappelle est affichée par la scène.
    ai-je tort ?

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    A priori, oui

    Le système Graphics View de Qt est basé sur le pattern MVC (Model-View-Control) qui sépare la gestion des données et affichage (http://qt.developpez.com/doc/4.7/vue...-graphics-view) :
    - QGraphicsScene : gère les objets QGraphicsItem
    - QGraphicsView : s'occupe de l'affichage de la scène et des items
    C'est donc bien la vue qui est visible et qui interagit avec l'utilisateur (et non la vue qui est affichée par la scène) et qui récupère les événement souris

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

Discussions similaires

  1. Détecter position souris
    Par Glosialabolas dans le forum Linux
    Réponses: 3
    Dernier message: 17/11/2005, 08h42
  2. Réponses: 3
    Dernier message: 05/11/2005, 23h50
  3. Réponses: 2
    Dernier message: 11/09/2005, 05h25
  4. Réponses: 4
    Dernier message: 22/08/2005, 19h19
  5. [MFC] position souris. systeme de coordonnées
    Par Gloubi99 dans le forum MFC
    Réponses: 2
    Dernier message: 20/07/2005, 11h57

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