Seite 1 von 1
Mehrere Tasten abfragen
Verfasst: 11. März 2006 11:31
von killerjoe
Hallo,
ist es nicht möglich auf einfache Art und Weise auf die mehrere verschiedene Tasten dieselben Aktionen ausgeführt werden?
Bei folgendem Code:
Code: Alles auswählen
switch(event->key())
{
event->accept();
case Key_Enter:
case Key_N:
case Key_Return:
{
machwas();
break;
}
.........
passiert auf die Eingabe von Enter oder Return erstmal gar nichts. Bei "N" geht es wie gewünscht. Das seltsame ist: nachdem das erste mal "n" gedrückt wurde klappt es danach auch mit Enter und Return - nur das ist ganz und gar nicht das gewünschte verhalten.
Ist das ein Bug in QT, oder ein Bug in meinem Kopf?
Danke!
Markus
Verfasst: 11. März 2006 19:19
von Adi
Es ist u.U. davon abhängig, welches Element im Form den Fokus hat.
Entsprechend hat key_enter in deisem Objekt vorrang.
Ich habe auch eine Routine wo ich die Taste abfange. Wenn der Fokus jedoch in einem Textfeld ist, hat dieses Vorrang.
Verfasst: 11. März 2006 21:35
von upsala
Sollte dein Code nicht eher so lauten:
Code: Alles auswählen
switch (event->key()) {
case Key_Enter:
case Key_N:
case Key_Return:
{
event->accept();
machwas();
break;
}
}
Verfasst: 12. März 2006 12:20
von killerjoe
Habe den code mal abgeändert, bringt aber auch nichts. Ich weiss auch nicht ob es was mit dem Eingabefocus zu tun hat. "n" klappt wunderbar - ich habe es zu testzwecken ja auch extra in die Mitte der 3 Keys gesteckt, finde einfach nicht wieso "n" zuverlässig funktioniert, Return und Enter aber nur nachdem "n" einmal gedrückt worden sind.
Verfasst: 12. März 2006 12:27
von Adi
Wo hast du den Event eingehängt? Ins Hauptformular oder auf ein bestimmtes Objekt wie z.B. Bushbutton?
Was genau versuchst du zu bauen?
Verfasst: 20. März 2006 00:00
von killerjoe
Das Keys fange in direkt im Formular ab und bei den angegeben Tasten will ich auf bestimmte Weise einen QTextBrowser reloaden. Und zwar soll diese Aktion auf alle 3 Tasten reagieren. Wenn das nicht gehen würde würdeich mir ja was anderes überlegen, aber seltsamerweise geht es ja wenn ich vorher mal die "n" gedrückt habe. Aber scheinbar bin ich der einzige der dieses Problem hat.