000
05.11.2003, 22:25 Uhr
~Chris
Gast
|
Hi, Ich möchte gern ein grafisches Programm programmieren, das auf Tastatureingaben (speziell die Pfeiltasten) reagiert und habe dabei folgendes Problem: Der Programmteil unten reagiert zwar auf drücken und loslassen einer Pfeiltaste und speichert den Zustand in den vier Variablen (vor, zurueck, links, rechts), aber wenn die Taste länger gedrückt bleibt, wechselt die Variable, in der der Zustand der Taste gespeichert wird immer zwischen true und false hin und her! Da ich damit ein Relaisinterface am Parallelport ansteuern möchte, schalten dann die Relais entsprechend auch immer hin und her! Kann man das Problem irgendwie lösen? Außerdem sollten auch zwei Pfeiltasten gleichzeitig gedrückt werden können! Dann sollten die Zugehörigen Variablen (z.B. vor und links) auf true gesetzt werden und solange auf true bleiben bis man die Taste(n) wieder loslässt.
Ich hoffe mir kann da jemand helfen (vielleicht mit Beispielcode, da ich noch Programmier-Anfänger bin). Ich arbeite unter Linux mit C++, KDevelop und Qt.
mfg Chris
C++: |
// Funktion wird automatisch bei jedem Tastendruck aufgerufen & prueft welche Taste gedrueckt wurde
void Taste::keyPressEvent( QKeyEvent *e ) { e->accept(); // Annehmen des KeyEvents
switch ( e->key() ) { case Key_Left: links = true; break; // links gedueckt? case Key_Right: rechts = true; break; // rechts gedueckt? case Key_Up: vor = true; break; // oben gedueckt? case Key_Down: zurueck = true; break; // unten gedueckt? default: e->ignore(); // keine relevante Taste gedrueckt } }
// Funktion wird automatisch beim Loslassen einer beliebigen Taste aufgerufen & prueft welche Taste losgelassen wurde
void Taste::keyReleaseEvent( QKeyEvent *e ) { e->accept(); // Annehmen des KeyEvents
switch ( e->key() ) { case Key_Left: links = false; break; // links losgelassen? case Key_Right: rechts = false; break; // rechts losgelassen? case Key_Up: vor = false; break; // oben losgelassen? case Key_Down: zurueck = false; break; // unten losgelassen? default: e->ignore(); // keine relevante Taste losgelassen } }
|
--edit: Pablo. [ cpp ] tags gesetzt -- Dieser Post wurde am 06.11.2003 um 13:08 Uhr von Pablo Yanez Trujillo editiert. |