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

Discussion :

QGraphicsView et curseur de souris

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 72
    Par défaut QGraphicsView et curseur de souris
    Salut tout le monde,
    je suis entrain de réaliser une application qui permet d'afficher une image en Qt, voiçi un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    QImage image(width, height, QImage::Format_ARGB32);
    .
    .
    .
    QGraphicsScene scene;
    QPixmap pixmap = QPixmap::fromImage(image);
    scene.addPixmap(pixmap);
    QGraphicsView vue(&scene);
    vue.show();
    mon but est de récupérer les informations d'un pixel dès que je place la souris dessus(valeur du quadripler ARGB).
    Est ce que quelqu'un peut m'aider.
    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 alexmam15

    1ère approche :
    Tu considère que la fonctionnalité "récupérer la couleur du pixel" est un nouveau comportement de ton QGraphicsPixmapItem : tu dérives donc cette classe pour modifier la fonction mouseMoveEvent.
    Il suffit juste de récupérer la position de la souris avec pos() (dans le repère de l'item) puis d'utiliser la fonction QImage::pixel() (le mieux est probablement de conserver dans l'item un copie de l'image plutôt que de convertir à chaque fois la pixmap en image)

    2ème approche :
    Tu considère que la fonctionnalité "récupérer la couleur du pixel" doit être fournit par ta vue QGraphicsView : tu dérives donc cette classe pour modifier la fonction mouseMoveEvent.
    Tu convertis ta vue en pixmap avec QWidget::render() puis en QImage. Tu récupères ensuite la position de la souris avec QMouseEvent::pos() et le pixel avec QImage::pixel()

    Bon courage

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 72
    Par défaut Problème détection curseur sur QGraphicsView
    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 QGraphicsScene et affichier à l'aide de QGraphicsView, et cela en bougeant tout simplement la souris .Sans maintenir le bouton appuyer.
    Je sais pas faire, j'ai essai ce code mais il ne marche que hors de l'image çàd hors le QGraphicsView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    //mon fichier.h
    class Design: public QGraphicsView
    {
    Q_OBJECT
     
    public:
        Design();
        void mouseMoveEvent(QMouseEvent *event);
     
    private:
        QGraphicsScene *scene;
        QGraphicsView *vue;
        QLineEdit *lineEdit;
        QLineEdit *lineEdit_2;
    .
    .
    .
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //mon fichier cpp
    Design::Design():QGraphicsView()
    {
     
        resize(730, 700);
    .
    .
    .
    scene = new QGraphicsScene(this);
        QPixmap pixmap = QPixmap::fromImage(image);
        scene->addPixmap(pixmap);
        vue = new QGraphicsView(scene,this);
        vue->setGeometry(10,120,720,576);
    }
        void Design::mouseMoveEvent(QMouseEvent *event)
    {
        int x,y;
        QString strx,stry;
        x= event->x();
        y= event->y();
        lineEdit->setText(strx.setNum(x));
        lineEdit_2->setText(stry.setNum(y));
    }
    Est ce que quelqu'un peut m'aider, je suis bloqué à cette étape.
    Merci d'avance

  4. #4
    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
    Comme indiqué dans le documentation de QWidget::mouseMoveEvent, cet event est envoyé par défaut que lorsqu'un bouton est enfoncé. Il faut ajouter setMouseTracking(true) pour que l'event soit envoyé même lorsqu'aucun bouton n'est appuyé.

    L'équipe Qt de Developpez réalise un gros travail de traduction de la documentation de Qt, merci de l'utiliser

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 72
    Par défaut
    Bonjour,
    Merci gbdivers pour votre réponse mais j'ai déjà mis vue->setMouseTracking(true) dans mon code mais c'est le même problème:
    Les coordonnées du curseur sont récupérées seulement si je le place dans ma fenêtre et hors le QGraphicsView ou autre forme, par contre je veux l'inverse, càd récupérer les coordonnées du curseur seulement lorsque je le place sur mon image.

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

Discussions similaires

  1. curseur de souris dans champ texte
    Par julio02200 dans le forum Access
    Réponses: 5
    Dernier message: 19/06/2006, 14h21
  2. [Débutant] Changer curseur de souris pendant téléchargement
    Par Xavier78000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/01/2006, 13h32
  3. [Decus] curseur de souris perso en PNG
    Par Fantole dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 10/11/2005, 14h09
  4. [MFC] Modifier curseur e souris dans CWnd
    Par DarkWiken dans le forum MFC
    Réponses: 4
    Dernier message: 17/03/2005, 11h04
  5. fullscreen et curseur de souris!
    Par bakonu dans le forum OpenGL
    Réponses: 4
    Dernier message: 12/05/2004, 10h07

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