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 :

Ligne entre deux QGraphicsItem [Graphics View]

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Ligne entre deux QGraphicsItem
    Salut,

    Voilà je fais un petit programme, et j'ai besoin de créer une ligne entre deux cercles "Node" (Node hérite de QGraphicsItem). Alors ce que je veux c'est que quand je clique sur le premier "cercle" et je relâche sur le deuxième, une ligne se créer entre les deux cercles, et je veux aussi que la ligne "s’actualise" quand je déplace l'un des deux cercles.

    Voila merci d'avance
    Dernière modification par dourouc05 ; 29/01/2014 à 14h02.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    De manière générale, tu vas devoir jouer avec les événement de la souris, tels que mousePressEvent et mouseReleaseEvent.

    L'idée est que, lorsque tu commence à cliquer sur la souris, tu prenne la coordonnée du point où elle se trouve, qui servira de "point d'origine" et que, lorsque tu relache le bouton, tu prenne la coordonnée du point sur lequel se trouve ta souris pour qu'elle serve de point de destination.

    Une fois que tu as ces deux points, tu vérifies s'il y a "quelque chose" (qui devrait, dans l'idéal, correspondre à ce que tu recherches quand meme ) au point d'origine, même chose pour le point de destination, et, si tu trouves "ce que tu veux" à ces deux points, tu crées un QGraphicsLineItem dont le point d'origine est le premier point et dont le point d'arrivée est le deuxième. Et le tour est joué

    Si tu veux voir la ligne se tracer pendant que tu bouge la souris également travailler avec le mouseMoveEvent: Tu peux dés le départ (enfin, dés que tu as vérifié qu'il y a bien quelque chose sous la souris lorsque tu enfonces le bouton de la souris) créer ton QGraphicsLineIem et mettre à jour les coordonnée lorsque l'événement mouseMoveEvent survient

    Pour le déplacement, il le principe est le même, mais il faut prendre attention à un fait particulier : le clique "seul" ne pourra faire qu'une seule chose : soit il trace la ligne, soit il déplace ton cercle. Il faudra donc trouver le moyen de faire la distinction entre les deux (clique droit au lieu de gauche appuis simultané sur la touche shift / alternate / ctrl ou autre à toi de voir ).
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Invité
    Invité(e)
    Par défaut
    Sinon, tu peux aussi jouer avec les fonctions de drag and drop event.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Lelfic Voir le message
    Sinon, tu peux aussi jouer avec les fonctions de drag and drop event.
    Oh, ca, oui, il est clair qu'il y a plusieurs événements susceptibles de faire l'affaire

    Mais le principal problème demeure le fait que, s'il y a deux comportements différents à prendre en compte, il faut être en mesure de distinguer l'événement qui produira un effet de l'événement qui produira l'autre.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    Oui merci, c'est bon j'ai résolu mon "problème", en fait je faisais les tests sur le "Node" au lieu de la scène, et puis je ne savais pas que QGraphicsLineItem existait ^^ ça m'a épargné une dizaine de lignes inutiles dans mon code

    Merci encore

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

Discussions similaires

  1. [ODS HTML] Enlever ligne entre deux tableaux
    Par maverik40 dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 26/11/2008, 16h46
  2. Réponses: 1
    Dernier message: 30/01/2008, 16h47
  3. Comparaison de lignes entre deux classeurs
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 22/11/2007, 23h43
  4. Réponses: 6
    Dernier message: 27/04/2007, 22h50
  5. Ligne entre deux listes
    Par dehorter olivier dans le forum Delphi
    Réponses: 3
    Dernier message: 02/02/2007, 16h46

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