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 :

[QGraphicsItem] Propagation Hover Events


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut [QGraphicsItem] Propagation Hover Events
    Salut,

    J'ai une scene avec differents items superposés (il s'agit du toit d'une maison avec différents items en dessous représentant les différentes pièces ) et j'aimerais que quand on passe la souris sur le toit, le toit disparaisse, et ensuite que chaque pièce se colore au passage de la souris.

    Le toit s'en va bien, par contre mes child items ne recoivent pas les hoverEvent (ils sont tous captés par l'item qui represente le toit).

    Avez vous une solution pour faire ce genre de choses ?

    Merci

    G.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 122
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Je ne suis plus sur, mais je croit qu'il y a une méthode ( fontion ? ) pour dire à Qt de continuer à faire passer l'event.

    Sinon, dans la fonction qui capte l'event, il n'y a qu'a appeler une fonction pour les pièces ... ( mais on perd un peu en efficacité )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Tu fait comment pour cacher ton toit?
    hide()? alpha = 0?

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Dans le pire des cas, tu peux réimplémenter mouseMoveEvent.

    Mais sinon, quand on fait event->ignore(), ça transmet effectivement l'évènement au parent si je ne m'abuse.

    void QEvent::accept ()

    Sets the accept flag of the event object, the equivalent of calling setAccepted(true).

    Setting the accept parameter indicates that the event receiver wants the event. Unwanted events might be propagated to the parent widget.

    -------------------

    void QEvent::ignore ()

    Clears the accept flag parameter of the event object, the equivalent of calling setAccepted(false).

    Clearing the accept parameter indicates that the event receiver does not want the event. Unwanted events might be propgated to the parent widget.

    See also accept().

    Une petite astuce dans ton cas serait de déplacer ton toit à la position (20000, 0) par exemple, le temps où la souris est sur lui. Dès que les "pièces" de la maison n'ont plus la souris pointées sur elles, tu ramènes le toit.

    C'est un peu "moche" mais ça peut marcher

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Alp Voir le message
    Une petite astuce dans ton cas serait de déplacer ton toit à la position (20000, 0) par exemple, le temps où la souris est sur lui. Dès que les "pièces" de la maison n'ont plus la souris pointées sur elles, tu ramènes le toit.

    C'est un peu "moche" mais ça peut marcher
    Normalement le hide() permet d'enlever temporairement un item. Et fait cela.
    J'ai constaté que si un alpha =0, l'item est toujours ici et capte les événements.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    En fait, je fais pas de hide() sur l'item principal, mais plutot un show sur les items du dessous (qui sont cachés par defaut).

    J'ai essayé avec les accept() / ignore(), et aussi les handleChildEvents(), mais sans succès. Je n'ai pas eu vraiment le temps d'insister pour être franc, j'espère avoir plus de temps en fin de journée.

    G.

Discussions similaires

  1. Concept propagation et bubbling event
    Par Ali Kent dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 16/12/2014, 16h22
  2. [Flex4] Propagation Event TitleWindow
    Par Flamenco dans le forum Flex
    Réponses: 6
    Dernier message: 12/10/2011, 14h31
  3. Réponses: 4
    Dernier message: 20/10/2009, 18h34
  4. propagation événement avec dispatch event
    Par john123 dans le forum Flex
    Réponses: 3
    Dernier message: 19/02/2009, 13h25
  5. Propagation Event sur le Parent
    Par Moustico dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/09/2008, 15h40

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