Seite 1 von 2

QKeyEvent + QMdiArea

Verfasst: 22. Mai 2008 17:56
von Johnny Freak
Grüße!
Ich habe eine Mdi-Applikation mit einer QMdiArea und mehreren QMdiSubWindows geschrieben. Folgendes Problem: wenn der Focus nicht auf meinem Hauptfenster liegt, bekomme ich keinen QKeyEvent, der für das ganze Programm gültig sein soll. Lege ich den Focus auf das Hauptfenster geht alles wunderbar.
Was tun?

Verfasst: 22. Mai 2008 18:43
von upsala
Willst du nur bestimmte Keys empfangen oder alle?

Verfasst: 23. Mai 2008 09:29
von Johnny Freak
Ich sehe da keinen Unterschied. Wie auch immer...eigentlich möchte ich alle bekommen aber auch nur bestimmte wäre ok...

Verfasst: 23. Mai 2008 18:20
von upsala
Dann kannst du einen QShortcut verwenden

Verfasst: 27. Mai 2008 09:47
von Johnny Freak
Ich glaube nicht, dass das die Lösung ist. Wieso sollte ich einen Shortcut erzeugen? Ich will nur meine KeyEvents abfangen und das immer, egal, ob ein QSubWindow aktiv ist oder nicht.

Verfasst: 27. Mai 2008 12:30
von upsala
Wenn dir die Lösung mit dem QShortcut nicht gefällt, kannst du ja auch einen eventFilter auch QApplication legen...

Verfasst: 27. Mai 2008 14:27
von Johnny Freak
Danke für Deine Mühe. Schon längst probiert->geht nicht.

Verfasst: 27. Mai 2008 15:42
von PeterLustig
Wenn das Hauptfenster keinen Fokus hat, dann hat dein ganzes Programm doch keinen Fokus (angenommen es gibt nur 1 Window). Also werden auch keine Tasten an dein Programm gesendet.

Verfasst: 27. Mai 2008 17:06
von Johnny Freak
Wie anfangs erwähnt, habe ich eine QMdiAera mit QMdiSubWindows. Was ich nicht verstehe ist folgendes. Ok, ich habe eine Hauptanwendung. Wenn ich jetzt, sagen wir, ein QFileDialog öffne, um eine Datei zu laden, so verliert meine Hauptanwendung den Focus. Das Problem ist, dass wenn meine Hauptanwendung den Focus verliert, ich dann die QKeyEvents nicht mehr bekomme. Wird schon irgendwie logisch sein. Aber was soll ich tun? ein Lösung muss es doch geben. Klingt eigentlich nichts so extrem, dass ich anfangen müsste, irgendwelches Zeug zu reimplementieren. Ich möchte eine einfache und saubere Lösung, das ist alles. Auf "schau in die Doku"-Antworten kann ich verzichten.

Verfasst: 27. Mai 2008 17:13
von PeterLustig
Warum sollte die Anwendung denn auch irgendwelche KeyEvents bekommen, wenn sie den Fokus nicht hat? Dazu müsstest du schon die Tastatur hooken, und das wäre mit sicherheit nicht Portabel.

Verfasst: 28. Mai 2008 08:14
von Johnny Freak
Ich muss schon sagen, dass das in der Praxis ein extremes Problem ist. Nimm eine Anwendung her, die für jeden so einfach wie möglich zu bedienen sein soll, auch für jemanden, der absolut keine Ahnung hat. Wenn jetzt dieser jemand gewohnt ist mit den Tasten F1 bis F4 mit seinem alten C-Programm zu interagieren und eine Datei öffnet, dann funktioniert das nicht mehr->Panik, Angst, Frust. Wie's ausschaut, muss ich irgendwie eine Art Automatismus einbauen, der den Fokus zur richtigen Zeit wieder an das Hauptprogramm zurückgibt. Enttäuschend.

Verfasst: 28. Mai 2008 09:23
von macman
Johnny Freak hat geschrieben:Nimm eine Anwendung her, die für jeden so einfach wie möglich zu bedienen sein soll, auch für jemanden, der absolut keine Ahnung hat.
Wenn jemand keine Ahnung hat, wird der nicht gewohnt sein irgendwas zu drücken :) Ich muss für die Hilfe einen Button zur Verfügung stellen, weil selbst hiesige Entwickler nicht auf die Idee kommen F1 zu drücken.

Aber ich käme nicht auf die Idee einem Systemdialog eine Funktion beizubringen, die er bei anderen Programmen nicht hat.

Verfasst: 28. Mai 2008 09:28
von Johnny Freak
Ich habe genau Null Ahnung, was Du gerade geschrieben hast.

Verfasst: 28. Mai 2008 09:38
von Johnny Freak
Ich meine. Ich schreibe ein neues, 20mal bedienerfreundlicheres Programm mit SubWindows u.Ä. und cool und eine Freude für alle Qt-Freaks. Aber...der, der früher mit seinem C-Programm gut zu recht gekommen ist und jetzt für alles offen ist, ausser, dass er nicht auf seine F-Tasten verzichten will, ist ein Individuum, dessen Wünsche ich auch erfüllen muss. Wenn dieses Individuum ein Testfile ladet und dann seine F-Tasten nicht mehr reagieren, dann wird er irgendwann schon checken, dass er wieder mit der Maus aufs Hauptprogramm klicken muss. Aber, ja, Scheiße eben. Das ist die Praxis.

Verfasst: 28. Mai 2008 09:46
von PeterLustig
Wenn das Fenster nicht den Fokus hat, dann werden auch keine Shortcuts akzeptiert. Das ist in keinem anderen Programm anders. Es wäre auch extrem bedienerUNfreundlich wenn das Programm Shortcuts akzeptiert, selbst wenn es nicht den Fokus hat.