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 :

Tracer une ligne avec la souris

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 62
    Points : 50
    Points
    50
    Par défaut Tracer une ligne avec la souris
    bonjours a tous

    dans mon projet j'ai pour but de calculer la distance entre le 1er clic du bouton gauche de la souris et jusqu'à le bouton sera laché tout en traçant la ligne qui s'effacera dés que lâche le bouton.
    le calcul et l'affichage se passe a la merveille mais mon problème est que la ligne se trace toujours a partir des centre et non a partir du point du clic!

    voici le code minimal:

    mygraphicsview.cpp

    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
    25
     
    ...
    void MyGraphicsView::mousePressEvent(QMouseEvent* event)
    {
     P1 =event->pos();
     
           if(event->button()==Qt::LeftButton)
           {
               line=new QGraphicsLineItem(QLineF(P1,P1));
               scene()->addItem(line);
           }
    }
     
    void MyGraphicsView::mouseMoveEvent(QMouseEvent *event)
    {
            scene()->removeItem(line);
            line->setLine(QLineF(P1,event->pos()));
            scene()->addItem(line);
    }
     
    void MyGraphicsView::mouseReleaseEvent(QMouseEvent *event)
    {
            scene()->removeItem(line);
            line=NULL;
    }
    Remarque: j'utilise QRubberband pour la fonction zoom et qui a le même principe et ça marche bien.

    tout parait a l'ordre mais je vois pas ou est le problème?

    un peux d'aide svp
    merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 62
    Points : 50
    Points
    50
    Par défaut
    enfin j'ai trouver la solution

    il faut convertir les points en coordonnées de scène depuis des coordonnées de vue.

    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
    25
    ...
    void MyGraphicsView::mousePressEvent(QMouseEvent* event)
    {
     P1 =event->pos();
     
           if(event->button()==Qt::LeftButton)
           {
               line=new QGraphicsLineItem(QLineF(mapToScene(P1),mapToScene(P1)));
               scene()->addItem(line);
           }
    }
     
    void MyGraphicsView::mouseMoveEvent(QMouseEvent *event)
    {
            scene()->removeItem(line);
            line->setLine(QLineF(mapToScene(P1),mapToScene(event->pos())));
            scene()->addItem(line);
    }
     
    void MyGraphicsView::mouseReleaseEvent(QMouseEvent *event)
    {
            scene()->removeItem(line);
            line=NULL;
    }
    salut à tous

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/07/2011, 11h43
  2. Tracer une ligne avec la souris (AS3) ?
    Par leoncap dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 26/04/2010, 16h46
  3. Dessine une ligne avec la souris
    Par MaxAttila dans le forum 2D
    Réponses: 2
    Dernier message: 22/05/2007, 13h35
  4. probleme pour tracer une ligne avec OleExcel
    Par blondelle dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/08/2006, 19h10
  5. [FP]Tracer Une ligne avec Dev-pascal
    Par yffick dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 17/12/2003, 16h33

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