Je suis confronté à un problème de focus avec une appli Qt/OpenGL.

J'ai une première QMainWindow qui contient un objet GLWidget ("widget_2")hérité de QGLWidget. Ce GLWidget sert à faire une animation graphique et contient des fonctions OpenGL.

Depuis cette première QMainWindow, j'appelle une seconde QMainWindow (appelons la "Menu") qui contient des paramètres d'entrée pour l'objet "widget_2".

Tout fonctionne bien sauf le focus. J'aimerais que le focus suive la souris entre les 2 QMainwindow, et plus précisémment, quand je suis sur la seconde ("Menu"), je puisse, en survolant le "widget_2" de la première, avoir directement le focus sans être obligé de cliquer dessus.

Le problème est que je fais des opérations de rotation sur ce widget_2 avec la souris.

J'ai donc essayé de mettre setMouseTracking(true) dans le constructeur de la première QMainWindow et surchargé MouseEvent de l'objet "widget_2" de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
   void GLWidget::mouseMoveEvent(QMouseEvent *event)
    {
    if (event->buttons() & Qt::LeftButton)
    {
    yrot = (event->x() - xdiff) / 10.0f;
    xrot = (event->y() + ydiff) / 10.0f;
    }
    else
    {
    event->ignore();
    }
    }
Pour le moment, quand je suis sur la seconde QMainWindow et que je charge les paramètres et que je reviens sur le GLWidget de la première, je suis obligé de cliquer gauche une fois avant de pouvoir faire les rotations sur widget_2 et aussi de presser sur les pushButton contenus dans cette première QMainWindow.

J'aimerais éviter d'avoir à cliquer à chaque fois. Je suis sous Debian 6.0.

Toute aide est la bienvenue.