Hi,
ich versuch grad, ein Strg-+ im keyPressEvent abzufangen. Hab da aber grad das eigenartige Phänomen, dass ich eine andere Taste geliefert kriege, wenn ich Strg gedrückt halte oder wenn nicht.
Wenn ich einfach nur + auf der Tastatur drücke, krieg ich den Code 43 zurückgeliefert (event->key()), was Qt::Key_Plus entspricht. Sobald ich aber Strg dazu drücke, ist der Code 93, was anscheinend der schließenden Klammer entspricht.
Ich kann natürlich einfach auf Code 93 prüfen, aber irgendwas läuft da ja was falsch. Außerdem weiß ich ja nicht, ob ich nicht bei anderen Tastaturlayouts vielleicht noch andere Werte kriege.
Weiß einer, was der Grund für das Verhalten ist?
Gruss
Strg-+ in keyPressEvent
Hi,
vermutlich musst Du noch den Modifier abfragen. Versuche es mal so:
vermutlich musst Du noch den Modifier abfragen. Versuche es mal so:
Code: Alles auswählen
if (qApp->keyboardModifiers() == Qt::ALT && event->key() == Qt::Key_Plus)
{
//...
}-
The_Fallen
- Beiträge: 7
- Registriert: 16. Juni 2010 15:44
Naja, genau das mache ich schon. Hier mal das gekürzte Event:
Der untere Teil mit Strg-Minus funktioniert einwandfrei, der obere mit Strg-Plus nicht. Wenn ich da aber den Teil mit dem modifier rausnehme, geht auch das.
Wenn ich die Plus-Taske OHNE Strg, gibt mir die Debug-Ausgabe in der ersten Zeile:
Wenn ich Strg drücke, krieg ich:
Schon irgendwie merkwürdig, oder?
Code: Alles auswählen
void MainWindow::keyPressEvent(QKeyEvent *event)
{
qDebug() << event->key() << "\t" << event->modifiers();
if (event->key() == Qt::Key_Plus && event->modifiers() == Qt::ControlModifier) {
[...]
}
else if (event->key() == Qt::Key_Minus && event->modifiers() == Qt::ControlModifier) {
[...]
}
}Wenn ich die Plus-Taske OHNE Strg, gibt mir die Debug-Ausgabe in der ersten Zeile:
Code: Alles auswählen
43 QFlags()
Code: Alles auswählen
93 QFlags(0x4000000)
-
The_Fallen
- Beiträge: 7
- Registriert: 16. Juni 2010 15:44
Nee, ist Windows 7. Aber guter Tipp, hab das Ganze grad mal unter Linux kompiliert. Und siehe da, er gibt mir in beiden Fällen den richtigen Keycode 43 aus.franzf hat geschrieben:Bist du unter Linux? Hast du irgendwie in deiner xmodmap o.Ä. rumgewerkelt, und eben strg-+ auf ")" gemapped?
Nur warum macht Win 7 das anscheinend falsch? Hab grad mal auf englisches Tastaturlayout umgestellt und da funktioniert's. Auch mit der Plus-Taste auf dem Numpad geht's ohne Probleme...