Seite 1 von 1
grabKeyboard und Fenster verschieben
Verfasst: 22. Januar 2008 16:08
von Snafu
Hallo!
Ich hab da ein kleines Problem.
Ich verwende grabKeyboard() um alle Tastenschläge abzufangen, doch wenn das grabKeyboard() aktiv ist kann ich das Fenster nicht mehr verschieben. Erst nach releaseKeyboard() kann ich das Fenster wieder verschieben.
Mein Gedanke mit grabMouse() wird das dann wieder gehen ging nach hinten los. Ich endete damit, dass ich das Programm nicht mehr schließen kann weil ich weder mit Alt+Tab noch mit Mausklick noch irgendwas anderes auf die Shell wechseln kann um dort abzubrechen (das x im Fenster ging auch nicht

). Hab dann mit Str+Alt+F6 nochmal eingeloggt und das Prog gekillt und danach wieder das grabMouse() rausgenommen.
Wie kann ich denn das Fenster verschieben, wenn ich grabKeyboard() an hab?
LG Snafu
Verfasst: 22. Januar 2008 23:28
von qtNiko
hi,
in der Doku wird vor grabMouse() und grabKeyboard() wegen dieser "einnehmenden" Eigenschaft gewarnt.
Aber, versuch es doch mal mit "QApplication::processEvents()" dazwischen. Wo dazwischen ist natürlich die Frage - musst du mal etwas probieren, oder auf eine klare Antwort von jemand warten, der sich wirklich auskennt

Verfasst: 23. Januar 2008 16:29
von Snafu
qtNiko hat geschrieben:Aber, versuch es doch mal mit "QApplication::processEvents()" dazwischen. Wo dazwischen ist natürlich die Frage - musst du mal etwas probieren, oder auf eine klare Antwort von jemand warten, der sich wirklich auskennt

Hmm... eigenartig, hab gerade festgestellt, dass dieses Problem nur unter Linux auftaucht. Unter Windows kann ich das Fenster problemlos verschieben.
Bez. QApplication::processEvents():
Ich fange die Events in einem eventFilter ab. Soll ich einfach QApplication::processEvents() ganz am Anfang vom EventFilter machen?
LG
Snafu
Verfasst: 26. Januar 2008 17:24
von qtNiko
hi,
habe deine Rückfrage fast übersehen
Ich bin sicher nicht der Experte, aber QApplication::processEvents() dient dazu, dass Tasten und Klicks auf Buttons, etc. auch dann bearbeitet werden, wenn der Rechner gerade voll beschäftigt ist.
Ich bin mir aber nicht sicher, ob QApplication::processEvents() da hilft. Es wäre halt einen Versuch wert - wenn es nicht bereits zu spät ist.
Verfasst: 26. Januar 2008 18:05
von ObeliX
also wie da QApplication::processEvents() helfen soll ist mir nicht klar.
(allerdings leuchtet mir auch nicht ein, warum grabKeyboard() das verschieben des fensters verhindert

... kann aber schon sein, so genau kenn ich die lage da nicht)
habe ich das richtig verstanden, daß die schon einen eventFilter hast ? warum dann noch das grabKeyboard() ? (oder wolltest du den eventFilter einrichten wegen dem processEvents()-versuch ?)
ich denke der eventFilter-ansatz ist hier die richtige herangehensweise.
Obel
Verfasst: 27. Januar 2008 16:34
von Snafu
Ich verwende "zusätzlich" zum eventFilter grabKeyboard() damit ich die Pfeiltasten abfangen kann ohne dass sie den aktuellen Focus wechseln.
Hab das nur so geschafft.
Ich kenne mich leider kaum aus mit Qt, ist eigtl auch mein Erstes Mal mit C++

Der "Bug" tritt wie gesagt nur unter linux auf.