Prüfe, ob mein QMainWindow momentan in Qt sichtbar ist

8

Ich würde gerne wissen, ob mein QMainWindow momentan sichtbar ist und nicht von anderen Fenstern anderer Anwendungen überlappt wird.

Ich muss dies für Windows, Linux und Mac erreichen.

    
Dídac Pérez Parera 12.08.2013, 09:05
quelle

1 Antwort

5

Ich habe vor einiger Zeit eine kleine Bibliothek geschrieben, um die Vordergrund- oder obersten Fensterinformationen, hauptsächlich den Fenstertitel, über Windows, Mac OS X und Linux zu lesen. Den Quellcode finden Sie hier: Ссылка

Ich verwende die native Windows API für Windows, X11-Bibliotheken für Linux und Cocoa für Mac OS X.

Hier ist ein kleines Beispiel, wie man aktive Fenster in Mac OS X mit objective-C ++ bekommt:
Mac.h

%Vor%

Mac.mm

%Vor%

Bitte beachten Sie, dass es in Cocoa keine direkte Möglichkeit gibt, nur das oberste Fenster zu erhalten. Sie erhalten eine Sammlung von Fenstern und durchlaufen diese, um die gewünschte zu finden.
Hier ist der Code für die Windows-API:
win.h

%Vor%

win.cpp

%Vor%

Hier ist der Code für Linux / X11:
linux_x11.h

%Vor%

linux_x11.cpp

%Vor%

X11-Code kann ziemlich hässlich und schwer zu verstehen sein, aber das sollte Ihnen den Einstieg erleichtern. Es ist schon eine ganze Weile her, dass ich mich direkt mit X11 beschäftigt habe, sodass ich nicht genau sagen kann, was jede Hilfsmethode gerade macht.

Ich abstrahiere den Code so, dass jedes plattformspezifische Teil des Codes dieselbe Methodensignatur aufweist. Dann überprüfe ich, ob es unter Mac OS X, Windows oder Linux kompiliert wurde und instanziiert die korrekten Klassen. Hier ist, wie alles zusammen hängt:

%Vor%

Sie können die Aktualisierungsrate auf eine langsamere Aktualisierungsrate ändern, wenn Sie möchten, aber ich führe die Updates alle 10ms durch, um ein Fast-Echtzeit-Update auf dem Fenster zu erhalten.

Ich habe diese Bibliothek hauptsächlich geschrieben, um die Fenstertitel von Webbrowsern und Videospielen zu lesen, damit ich eine Schätzung erhalten konnte, wie lange die Leute bestimmte Spiele auf ihren Computern spielen. Ich schrieb dies als Teil einer Spiel-Metrik-App, die ich gerade entwickle.

    
Cameron Tinker 12.08.2013, 13:02
quelle

Tags und Links