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

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut [QGraphicsScene] Contrôler que le pointeur n'est pas sorti du viewport lors d'un événement move
    Bonsoir,

    Sur une QGraphicsScene, j'ai installé un signal moved.

    Celui-ci s'active correctement lors du clique dans la zone.
    Cependant, si la souris, restée pressée, vient à sortir de la zone, le signal est toujours envoyé.
    Ce comportement ne me convient pas dans le cas présent.

    J'ai donc essayé de le contraindre en utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QGraphicsView->rect().contains()
    QGraphicsView->viewPort()->rect().contains()
    QGraphicsView->visibleRegion().contains()
    Avec pour paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QGraphicsSceneMouseEvent::pos ()
    QGraphicsSceneMouseEvent::scenePos ()
    QGraphicsSceneMouseEvent::screenPos ()
    Mais le résultat n'est jamais correct.

    Soit la contrainte est toujours validée, soit elle ne l'est jamais, soit la zone se situe quelque part en haut à gauche de l'écran, trop loin de ma scène en tout cas.

    Ai je raté quelque chose ?
    Il y aurait il une bonne manière de le faire ?

    Merci par avance

  2. #2
    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 : 37
    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
    Points : 8 140
    Points
    8 140
    Par défaut
    Quand tu dis que tu as installé un signal moved, tu veux dire que tu as ré-implémenté la fonction suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void QGraphicsScene::mouseMoveEvent ( QGraphicsSceneMouseEvent  * mouseEvent )
    Si c'est le cas tu peux définir d'ignorer l'événement mouseEvent (mouseEvent->ignore()) quand ta souris sors de ta scène, cependant ça ne devrait pas être le cas, cet événement devrait être uniquement envoyé lorsque ta souris est au dessus de ta scène.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    re bonsoir !

    C'est tout à fait ce que j'ai ré implémenté.
    Mais le comportement que tu décris n'est pas celui que j'ai constaté : (
    Je re posterais demain avec un code testable épuré.

    Encore Merci.

Discussions similaires

  1. [GD] imagedestroy qui m'indique que son paramètre n'est pas correct
    Par karaemrah dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/08/2007, 17h55
  2. Réponses: 2
    Dernier message: 01/11/2006, 22h36
  3. Réponses: 10
    Dernier message: 31/08/2006, 14h57
  4. Tester que le fichier n'est pas un fichier binaire
    Par fedfil dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/10/2005, 17h29
  5. [VB.NET]Lancement d'un programme que s'il n'est pas lancé
    Par cyrcroix dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2005, 14h05

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