ich versuche gerade meinen Opengl-code unter Qt zum laufen zu bringen. Da muss ich ja dann einige spezifische Funktionen von GLUT mit Qt-Funktionen realiesen. Hat soweit, glaube ich, geklappt. Es hapert aber leider an der Anpassung der glutKeyboardFunc(). Anstatt glutKeyboardFunc() nutze ich keyPressEvent(QWidget* event).
Jetzt möchte ich einfach eine Variable, die ich vorher global definiert habe mit einer Tastenanweisung ändern. So sieht das dann aus:
Code:
int modus = -1;
.....
void GLWidget::keyPressEvent(QKeyEvent* event)
{
switch (event->key())
{
case Qt::Key_F2 :
modus = 1;
updateGL();
break;
default:
break;
}
}
Diese Variable dient dann einer if-Überprüfung in mousePressEvent
Code:
void GLWidget::mousePressEvent(QMouseEvent* e)
{
if (modus == 1 && (e->buttons() & Qt::LeftButton))
{
counter++;
p_list[counter].x = mx - width1/2;
p_list[counter].y = my - height1/2;
glPointSize(5);
glColor3d(1, 0, 0);
updateGL();
}
}
Aber leider findet keine Änderung der Variable modus statt. Ich habe mich bei der Umwandlung von GLUT-Funktionen in Qt-Code an diese Seite gehalten.
Nach mehrerem Rumprobieren habe ich festgestellt, dass ich gar nicht in die Funktion keypressevent reinkomme. Auch einfache Printbefehle werden gar nicht ausgeführt. Die Funktion wird also gar nicht aufgerufen. Woran kann das liegen????
Ideen: 1. Sicher das dein QGLWidget den Keyboard-Focus hat? Ggf. einmal mit der Maus reinklicken. 2. Setzt du deine Variable im keyReleaseEvent vielleicht wieder zurück? Du musst wissen das es ein Autorepeat gibt. Solange die Taste gedrückt gehalten wird werden ständig abwechselnd press und release Events gefeuert. Ziemlich sinnlos, aber man kann einfach alle Events komplett ignorieren bei denen event->isAutoRepeat() == true.
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.