Tastaturabfrage - bei machen Tasten klappts...
Verfasst: 29. März 2007 18:51
Hallo zusammen!
Habe ein kleines Problem mit einem QT-Programm, welches ich gerade schreibe. Das Programm zeigt NURBS-Flächen in 3D an und basiert im wesentlichen auf dem Hello GL-Beispiel.
Ich habe einige zusätzliche Tasten definiert, z.B. die Taste "B" zum ein/ausblendern der BoundingBoxen der Flächen, das funktioniert auch.
Nun möchte ich gern die Tasten W,A,S,D dazu nutzen, einen Punkt im Raum zu bewegen, um damit eine Abstandsberechnung bezüglich der Fläche zu machen - der Code kompiliert auch, aber die verknüpften Funktionen werden nicht aufgerufen (per Debugger nachgeprüft). Ich bin mit meinem Latein am Ende - wer kann mir sagen warum die Taste "B" funktioniert, die "WASD"-Tasten jedoch nicht?
Die Funktionen wMove(),aMove(),etc. sind im glWidget selbstverständlich definiert, und sie funktionieren auch, wenn ich ich sie bspw. aus der toggleBB()-Methode aufrufe.
Habe ein kleines Problem mit einem QT-Programm, welches ich gerade schreibe. Das Programm zeigt NURBS-Flächen in 3D an und basiert im wesentlichen auf dem Hello GL-Beispiel.
Ich habe einige zusätzliche Tasten definiert, z.B. die Taste "B" zum ein/ausblendern der BoundingBoxen der Flächen, das funktioniert auch.
Nun möchte ich gern die Tasten W,A,S,D dazu nutzen, einen Punkt im Raum zu bewegen, um damit eine Abstandsberechnung bezüglich der Fläche zu machen - der Code kompiliert auch, aber die verknüpften Funktionen werden nicht aufgerufen (per Debugger nachgeprüft). Ich bin mit meinem Latein am Ende - wer kann mir sagen warum die Taste "B" funktioniert, die "WASD"-Tasten jedoch nicht?
Code: Alles auswählen
wAct = new QAction(tr("&Vor"), this);
wAct->setShortcut(tr("w"));
connect(wAct, SIGNAL(triggered()), glWidget, SLOT(wMove()));
aAct = new QAction(tr("&Links"), this);
aAct->setShortcut(tr("a"));
connect(aAct, SIGNAL(triggered()), glWidget, SLOT(aMove()));
sAct = new QAction(tr("&Zurück"), this);
sAct->setShortcut(tr("s"));
connect(sAct, SIGNAL(triggered()), glWidget, SLOT(sMove()));
dAct = new QAction(tr("&Rechts"), this);
dAct->setShortcut(tr("d"));
connect(dAct, SIGNAL(triggered()), glWidget, SLOT(dMove()));
bbAct = new QAction(tr("&Toggle BoundingBox"), this);
bbAct->setShortcut(tr("b"));
connect(bbAct, SIGNAL(triggered()), glWidget, SLOT(toggleBB()));
...
displayMenu->addAction(bbAct);
displayMenu->addSeparator();
displayMenu->addAction(wAct);
displayMenu->addAction(aAct);
displayMenu->addAction(sAct);
displayMenu->addAction(dAct);