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 :

Redessiner un widget après un événement de souris


Sujet :

Qt

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut Redessiner un widget après un événement de souris
    Bonjour à tous,

    Je vais droit au but : comment faire pour redessiner le widget lorsque la souris est déplacée dessus ?

    Voici les déclarations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class MonWidget {
    protected:
       void paintEvent (QPaintEvent* e);
       void mouseMoveEvent (QMouseEvent* e);
     
       QPainter* painter;
       QPoint* lastMousePos;
    };
    Et les implémentations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void MonWidget::paintEvent (QPaintEvent*) {
       painter = new QPainter(this);
       // dessin du widget ...
       delete painter;
    }
     
    void MonWidget::mouseMoveEvent (QMouseMoveEvent* e) {
       lastMousePos = e->pos();
       paintEvent(0); // Je pense que l'erreur viens d'ici ...
    }
    J'ai essayé de remplacer paintEvent(0); par l'opération de dessin directement ce qui ne marche pas non plus. Le mouse-tracking est activé (dans le constructeur).

    En somme, le seul moyen d'afficher la dernière position (lastMousePos) de la souris, est de redimensionner le widget après, pour que Qt déclenche le paintEvent seul.

    Avez-vous des idées ?
    Merci

    Kwakanar

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Vague souvenir de Qt3 : ce ne serait pas la fonction membre repaint() ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    Dans Qt4, c'est paintEvent() mais c'est tout comme

    Seulement, quand je l'appelle à partir de l'événement mouseMoveEvent(), ça n'a aucun effet ...
    Donc, la mise à jour se fait lorsque Qt, en interne, appelle paintEvent lorsque je redimensionne la fenêtre.

    PS: je préférais ton avatar précédent, je suis un grand fan des htf

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu confonds. paintEvent() est la fonction que tu dois redéfinir pour gérer le dessin, repaint() est elle la fonction à appeler pour réafficher le contrôle (et qui appelera au bout du compte paintEvent()).

    PS : bah, laissons ce pauvre Cuddles fêter Noël lui aussi. Il est pas mignon avec son p'tit bonnet bleu ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    Merci beaucoup c'est parfait !
    Et vive les htf

Discussions similaires

  1. TCustomTransparentControl et évènement de souris
    Par Tardiff Jean-François dans le forum Composants VCL
    Réponses: 0
    Dernier message: 07/12/2007, 15h57
  2. Affichage de widget après destruction
    Par Zeunknown dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 31/07/2007, 20h09
  3. Forcer le focus sur la zone après un évènement ONCHANGE
    Par totoleheros dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2007, 14h24
  4. affichage image après passage de la souris sur bouton
    Par nerser dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/01/2006, 22h53
  5. Réponses: 3
    Dernier message: 05/11/2005, 23h50

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