Seite 1 von 1

QT und OpenGL/Glut

Verfasst: 13. November 2007 13:47
von AndiLatte
Ich benötige Unterstützung bei der Tastaureinbindung bei QT mit GLUT.

Aufbauend auf die OpenGL Tutorial auf der Trolltech Seite habe ich diesen Code:

Code: Alles auswählen

// speichert den Zustand der Taste fuer die Vorwaertsbewegung
bool move_forward = false;

// wird aufgerufen, wenn eine Taste GEDRUECKT wird
void GLWidget::myKeyboardFunc(unsigned char key, int x, int y)
{
    switch(key)
    {
        case GLUT_KEY_UP: move_forward = true; break;
        // and other keys
    };
}

// wird aufgerufen, wenn eine Taste LOSGELASSEN wird
void GLWidget::myKeyboardUpFunc(unsigned char key, int x, int y)
{
    switch(key)
    {
        case GLUT_KEY_UP: move_forward = false; break;
        // and other keys
    };
}

// hier findet die Simulation statt!
void GLWidget::myIdleFunc()
{
    // ...
    if (move_forward) { // z.B.: glTranslatef(....); }

    // und andere Variablen abfragen...
} 
in meine glwidget.cpp gepackt und

Code: Alles auswählen

glutInit....
glutInitDisplayMode...
..
glutKeyboardFunc(myKeyboardFunc);
    glutKeyboardUpFunc(myKeyboardUpFunc);
    glutIdleFunc(myIdleFunc); 
in die main.cpp

doch es mag nicht wirklich funtionieren...

Was mache ich falsch?

Verfasst: 13. November 2007 14:15
von macman
Ich mag nicht wirklich raten was nicht funktioniert, aber in den OpenGL-Examples gibt ein GLControlWidget, welches mir einiges abgenommen hat.

Verfasst: 13. November 2007 15:14
von AndiLatte
macman hat geschrieben:..., aber in den OpenGL-Examples gibt ein GLControlWidget, welches mir einiges abgenommen hat.
Ja das hört sich doch sehr gut an. Weisst du noch wo ich die Beispiele finde?

Verfasst: 13. November 2007 15:51
von macman
Bei Qt4 ist es nicht mehr dabei und die Qt3-Examples liegen nicht im Netz. Ich leg es dir ins Postfach.

Verfasst: 13. November 2007 16:51
von DeepDiver

Verfasst: 13. November 2007 17:07
von AndiLatte
macman hat geschrieben:Bei Qt4 ist es nicht mehr dabei und die Qt3-Examples liegen nicht im Netz. Ich leg es dir ins Postfach.
sau gut, danke 8)

jetzt besteht mein Projekt aus 7 Dateien:
* glwidget.cpp
* glwidget.h
* mainwindow.cpp
* mainwindow.h
* main.h
* glcontrolwidget.cpp
* glcontrolwidget.h

Ich hatte vorher meine Maus Befehle (zb. mousePressEvent) in glwidget.cpp. Diese sind ja nun überflüssig, da glcontrolwidget.cpp schon alles hat. mit qmake/make konnte ich es kompilieren, aber wie wechsel ich jetzt von den Mausbefehlen aus glwidget.cpp zu denen aus glcontrolwidget.cpp? Bin noch nicht wirklich fit beim Programmieren :?

Verfasst: 13. November 2007 17:08
von AndiLatte
DeepDiver hat geschrieben:Qt OpenGL Examples sind hier:
http://doc.trolltech.com/4.3/examples.html#opengl
danke schön. jetzt hab ich den aufbauder trolltech seite mit den verschiedenen versionen und den jeweiligen beispielen durchschaut :wink:

Verfasst: 14. November 2007 07:28
von macman
AndiLatte hat geschrieben:aber wie wechsel ich jetzt von den Mausbefehlen aus glwidget.cpp zu denen aus glcontrolwidget.cpp?
Dein GLWidget muss vom GLControlWidget erben.

Code: Alles auswählen

class GLWidget : public GLControlWidget

Verfasst: 14. November 2007 10:42
von AndiLatte
macman hat geschrieben:Bei Qt4 ist es nicht mehr dabei und die Qt3-Examples liegen nicht im Netz. Ich leg es dir ins Postfach.
Hey,

ich hab die QT3 Beispiele gefunden:

http://rpmfind.net/linux/RPM/opensuse/1 ... 2.ppc.html

viell hast du daran auch Interesse..

Verfasst: 14. November 2007 10:46
von macman
AndiLatte hat geschrieben:viell hast du daran auch Interesse..
Danke, aber ich hab den Kram noch in mehrfacher Ausführung auf der Platte liegen :-)

Verfasst: 17. November 2007 16:53
von twessels
hi,
Glut wird durch Qt ziemlich überflüssig. Qt bietet ja schon zahlreiche, eigene Events an um mit den Programm zu agieren, dafür wurde Glut einst geschaffen. Falls es dir auf die Zeichenroutinen wie gluWireCube() oder gluLookAt() ankommt ist das auch kein Problem.

Aber ich würde erstmal QKeyEvent bevorzugen anstatt glutKeyboardFunc()