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 :

Réimplementer le wheelEvent d'un QScrollBar


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Par défaut Réimplementer le wheelEvent d'un QScrollBar
    Bonjour,

    J'ai créé une classe dérivée de QScrollBar pour récupérer les évenements molette de la souris:

    qscrollbarext.h:

    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
    #include <QScrollBar>
    #include <QMouseEvent>
     
    class QScrollBarExt : public QScrollBar
    {
        Q_OBJECT  // must include this if you use Qt signals/slots
    public:
        QScrollBarExt(Qt::Orientation orientation, QWidget *parent=0);
        ~QScrollBarExt();
     
    protected:
        void wheelEvent(QWheelEvent *event);
     
    signals:
        void wheel(int delta);
    };
    qscrollbarext.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
    #include "qscrollbarext.h"
     
    QScrollBarExt::QScrollBarExt(Qt::Orientation orientation, QWidget *parent)
        : QScrollBar(orientation, parent)
    {
        setMouseTracking(true);
    }
     
    QScrollBarExt::~QScrollBarExt()
    {
     
    }
     
    void QScrollBarExt::wheelEvent(QWheelEvent *event)
    {
        emit wheel(event->delta());
    }
    ...Mais a aucun moment le wheelEvent n'est appelé :/
    Pourtant ça a bien marché quand j'ai dérivé le wheelEvent d'un QGLWidget... Ma QScrollBarExt fait bien défiler sa barre lorsque je fais jouer la molette en étant au dessus, mais c'est justement le comportement que je voulais éviter et dériver. Mais visiblement ma dérivation n'est pas appelée, aucun signal wheel() n'est envoyé.

    Une idée ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Par défaut
    Solution trouvée:

    Avec QScrollBar, il faut dériver event() plutot que wheelEvent() pour attraper les évènements molette:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    bool QScrollBarExt::event(QEvent *event)
    {
        if (event->type() == QEvent::Wheel)
        {
            QWheelEvent *wheelevent=static_cast<QWheelEvent*>(event);
            emit wheel(wheelevent->delta());
            return true;
        }
        return QScrollBar::event(event);
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Tu pouvais aussi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void QScrollBarExt::wheelEvent(QWheelEvent *event)
    {
        emit wheel(event->delta());
        event->accept(); // là
    }

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

Discussions similaires

  1. [Graphics View] wheelEvent sur un QGraphicsItem
    Par wirenth dans le forum Débuter
    Réponses: 1
    Dernier message: 17/11/2011, 09h47
  2. réimplementer une methode virtuelle
    Par Halloula dans le forum C++
    Réponses: 4
    Dernier message: 09/11/2009, 03h39
  3. Réponses: 8
    Dernier message: 08/03/2009, 18h30
  4. QScrollArea voir les QScrollBar
    Par barbug dans le forum Qt
    Réponses: 2
    Dernier message: 23/02/2009, 12h08
  5. Gérer des QScrollbar
    Par nada114 dans le forum Qt
    Réponses: 5
    Dernier message: 03/11/2008, 09h27

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