Situation: Ein border-less QDialog bleibt erfolgreich über anderen Anwendungen.Vermeiden Sie die Aktivierung von Anwendungen und fokussieren Sie, wenn Sie darauf klicken - Windows API oder Qt
Das Problem ist, wenn auf dieser always-on-top-Anwendungsfenster klicken, geschieht Folgendes:
- Die geklickt always-on-top-Anwendung
- Die geklickt always-on-top aktiviert wird Anwendung Fenster stiehlt den Fokus der bisherigen aktiven/fokussierter App
gibt es eine Möglichkeit, dass, wenn auf dieser always-on-top inaktiv und unkonzentriert Anwendungsfenster klicken,
- die aktuelle Anwendung nicht verlieren Aktivierung und Fokus
- während der Benutzer immer noch in der Lage zu interagieren mit der immer-auf-der-Anwendung (Knöpfe oder Dropdown-Menüs treffen, ziehen Sie das Fenster)?
Ich arbeite mit Qt, aber es gibt kein Problem mit der nativen Windows-API.
ich folgende Qt windowFlag versucht:
Qt::WindowDoesNotAcceptFocus
, aber es funktioniert nicht: die Always-on-top-Anwendung aktiviert ist, fokussiert.Qt::WindowTransparentForInput
, die Always-on-Top-Anwendung ist wirklich transparent für Klicks: nicht aktiviert und nicht fokussiert in, aber Tasten werden leider nicht ausgelöst, wenn sie getroffen werden.
Hm, wie machst du das in Qt sowieso? "WinEvents" überschreiben? – swdev
Sie können 'showEvent()' überschreiben. Rufen Sie für die Implementierung zuerst die übergeordnete Methode und dann den obigen Code auf. – Derek
Nicht erfolgreich :) Ich habe bereits Erfolg bei der Portierung des Codes auf PyQt mit PyWin-Bibliotheken, überschreiben 'showEvent()', aber wenn ich auf dieses annehmen-zu-nicht-aktive Fenster klicken, wird mein Hauptfenster inaktiv. Irgendeine Idee? – swdev