Bonjour tous,
j'ai fais un rapide programme avec Qt et openGL afin de faire un cube:
tout fonctionne mais à présent je veux pouvoir faire tourner ce cube à l'aide du clavier, j'ai donc ajouté ceci:
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
22
23 #include "myGLWidget.h" #include <GL/gl.h> #include <GL/glu.h> float rotateX; float rotateY; float rotateZ; myGLWidget::myGLWidget() : QGLWidget() { } void myGLWidget::paintGL() //c'est ici que l'on trace nos objets { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(1.0f,1.0f,1.0f,1.0f); glLoadIdentity(); glRotatef(rotateX,1.0f,0.0f,0.0f); glRotatef(rotateY,0.0f,1.0f,0.0f); glRotatef(rotateZ,0.0f,0.0f,1.0f); gluLookAt( 1.2, 1.7, 1.0, 0, 0, 0, 0, 0, 1); glBegin(Quad); /////je fais mon cube glEnd();
dans le .h
et dans le .cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void keyPressEvent(QKeyEvent *);
(comme vous pouvez le voir il y a un cout dans cette methode qui me permet de voir si lorsque je touche au clavier il est detecté, je me rend compte que ça ne m'affiche jamais ce message, donc je pense que je gère mal la gestion du clavier...)
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 void myGLWidget::keyPressEvent(QKeyEvent *keyEvent) { cout << "clavier?" << endl; switch(keyEvent->key()) { case Qt::Key_Up: rotateX=rotateX+2; updateGL(); break; case Qt::Key_Down: rotateY=rotateY+2; break; case Qt::Key_Left: rotateZ=rotateZ-2; break; case Qt::Key_Right: rotateZ=rotateZ+2; break; } }
comme les variables rotateX,Y,Z sont des variables gloables alors je m'attendais à ce que ça les modifient puis que cela fassent tourner mon cube...
mais ça ne focntionne pas...
pourriez vous me dire pourquoi s'il vous plait ?
Partager