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 :

[QGraphicsView] Désactiver l'événement wheelEvent pour les scrollbars


Sujet :

Qt

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut [QGraphicsView] Désactiver l'événement wheelEvent pour les scrollbars
    Bonjour à tous,

    J'ai un objet MyQGraphicsView dérivé de QGraphicsView pour implémenter la fonction événementielle wheelEvent(), j'utilise donc la molette dans un autre but, le problème est que dès qu'il y a des scrollbars, j'ai mon événement de ma fonction et en même temps la scrollbar qui suit le mouvement.

    Comment puis-je faire pour désactiver ces événements ?

    Ou encore mieux car je n'ai pas trouvé dans la doc, est-il possible de supprimer ces scrollbars ?

    Merci d'avance

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    MyQGraphicsView hérite je suppose de QGraphicsView. QGraphicsView quant à lui hérite de... ? Et dont les attributs sont... ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    J'ai supprimé les scrollbars, mais maintenant la vue bougera toujours de haut en bas si j'utilise la molette de la souris.

    Comment peut-on désactiver ces événements ?

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Dans ta surcharge de wheelEvent(), appelles-tu l'implémentation parente ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    Non, je n'appelle rien à part la méthode scale de QGraphicsView. Je crois que l'appel de l'implémentation parente sert seulement à pouvoir récupérer l'événement dans les widgets enfants, non ?

  6. #6
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Non, par contre ça aurait transmis l'événement à QGraphicsView qui l'aurait elle même transmise à QAbstractScrollArea.

    Ceci dit, ce n'est pas normal, pas du tout Si je surcharge wheelEvent je bloque bien l'utilisation de la molette pour scroller. Peux-tu nous montrer ta déclaration de wheelEvent et éventuellement sa définition ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    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
     
    class MyQGraphicsScene : public  QGraphicsScene
    {
        Q_OBJECT
        bool move;
        public:
            MyQGraphicsScene(QWidget *parent = 0);
        signals:
            void zoom(int value);
        protected:
             void wheelEvent ( QGraphicsSceneWheelEvent * wheelEvent );
    };
     
     
    void MyQGraphicsScene::wheelEvent ( QGraphicsSceneWheelEvent * wheelEvent )
    {
        if(wheelEvent->delta() < 0)
            emit zoom(-2);
        else
            emit zoom(-1);
    }
    Voilà une partie du code utilisé. En fait je me suis trompé, ce n'est pas QGraphicsView que j'ai dérivée mais QGraphicsScene. Donc en fait ce serait ça la solution, je dérive QGraphicsView et je réimplémente la fonction wheelEvent en ne faisant rien, comme ça QGraphicsView ne récupérera pas l'événement. Non ?

  8. #8
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Oui, c'est ça, c'est la view qui s'occupe de faire le scroll

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    554
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 554
    Points : 181
    Points
    181
    Par défaut
    C'est bon j'ai réussi en dérivant QGraphicsView.

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/09/2016, 18h47
  2. [UI Mobile] Désactiver le zoom uniquement pour les Header/Footer
    Par PP(Team) dans le forum jQuery
    Réponses: 0
    Dernier message: 02/07/2012, 18h44
  3. Appeler l'événement manuellement pour les composants SWING
    Par najla-IAC05 dans le forum Composants
    Réponses: 14
    Dernier message: 13/04/2011, 18h15
  4. Réponses: 5
    Dernier message: 25/07/2005, 10h29

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