2010-04-07 2 views
0

J'essaye d'attraper des événements de presse de souris dans un QGLWidget. J'essaie d'utiliser les mouvements de la souris pour déplacer un curseur artificiel (un point "flottant") dans une fenêtre stéréo. Je réimplémentées mousePressEvent dans mon QGLWidget, voici les sections pertinentes des fichiers .h et .cpp:Pourquoi je ne reçois pas mousePressEvents dans un QGLWidget?

le fichier .h

protected:

void initializeGL(); 
    void paintGL(); 

    void mouseMoveEvent(QMouseEvent *event); 
    void mousePressEvent(QMouseEvent *event); 

est la fonction Ici, dans le fichier .cpp

void ImageGLView::mousePressEvent(QMouseEvent *event)
{

if(FLOATING_DOT == mouseMode){ 
     QPoint currentPos = event->pos(); 
     lastPos = currentPos; 
    } 

}

Rien d'exceptionnel ici ... mais mon mousePressEvent ne reçoit aucun événement. J'ai mis des points d'arrêt, et prendre d'autres actions, mais ces événements vont ailleurs

Je reçois les mouseMoveEvents, tant que le suivi de la souris est activé. Si je ne l'ai pas allumé, je ne les obtiens pas, même si j'appuie sur les boutons de la souris tout en déplaçant la souris. Cela semble être contraire à la documentation et à toutes les références QT. Cela me fait penser que quelqu'un d'autre obtient le mousePressEvents - mais ces chaînes de texte n'apparaissent nulle part ailleurs dans mon code. Compte tenu de la simplicité de ce que je fais, je ne sais pas quoi essayer ensuite - j'ai fait ce genre précis de choses dans d'autres codes QT GL sans problème - peut-être est-ce lié à la nature stéréo de la fenêtre? D'autres idées?

détails: QT4.6, Windows XP

+0

Avez-vous essayé de placer un point d'arrêt dans l'événement 'bool QWidget :: (événement QEvent *)' sur l'événement 'mousePressEvent ((QMouseEvent *)); Que se passe-t-il lorsque vous entrez dans cette fonction? –

+0

ne sais pas ce que vous voulez dire. Je mets des points d'arrêt partout dans ma fonction, aucun ne sera jamais atteint-- – jhowland

Répondre

0

Si vous utilisez Qt 4.6.2, cela peut être un problème, car il est une version très bogué: QScrollArea accuse parfois, même QTimer ne fournissent pas les événements alors que Le pointeur de la souris ne se trouve pas sur la fenêtre de l'application. Vous pouvez essayer de télécharger une version plus récente.

Questions connexes