QKeyEvent + QMdiArea

Verschiedenes zu Qt
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

QKeyEvent + QMdiArea

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Willst du nur bestimmte Keys empfangen oder alle?
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

Beitrag von Johnny Freak »

Ich sehe da keinen Unterschied. Wie auch immer...eigentlich möchte ich alle bekommen aber auch nur bestimmte wäre ok...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dann kannst du einen QShortcut verwenden
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn dir die Lösung mit dem QShortcut nicht gefällt, kannst du ja auch einen eventFilter auch QApplication legen...
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

Beitrag von Johnny Freak »

Danke für Deine Mühe. Schon längst probiert->geht nicht.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag 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.
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

Beitrag 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.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag 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.
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

Beitrag 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.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

Beitrag von Johnny Freak »

Ich habe genau Null Ahnung, was Du gerade geschrieben hast.
Johnny Freak
Beiträge: 29
Registriert: 4. April 2007 15:45

Beitrag 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.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag 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.
Antworten