Wie Popup-Message erstellen?

Alles rund um die Programmierung mit Qt
Antworten
MADsCIENTIST

Wie Popup-Message erstellen?

Beitrag von MADsCIENTIST »

Hallo liebe Community,

ich möchte gerne in meinem Programm eine Popup-Meldung in der Nähe des System-Trays
(oder auch an einer beliebigen anderen Stelle des Displays) anzeigen lassen.
[so wie man es beispielsweise bei dem Antivirenprogramm "Avast" sehen kann]

Dabei soll es sich aber auch wie beim geöffneten Overlay von Steam oder Origin verhalten, also vor
einer Anwendung im Full-Screen-Mode angezeigt werden können!

Wie implementiere ich sowas?


Bedanke mich für sinnvolle Hilfe schon mal im Voraus.
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: Wie Popup-Message erstellen?

Beitrag von hilefoks »

Moin,

eigentlich wie jedes andere Fenster auch - also ein QWidget. Mit passenden Qt::WindowFlags kannst du dieses Widget rahmenlos gestalten und z.B. mit dem Flag Qt::WindowStaysOnTopHint immer im Vordergrund halten lassen. Natürlich musst du es auch passend positionieren (QWidget::move()). Falls du Qt5 verwendest, könnte dir dabei QDesktopWidget hilfreich sein, den du musst ja die Auflösung des Displays berücksichtigen.

MfG,
Hilefoks

P.S: Da ich weder Avast, Steam noch Origin kenne, sagen mir diese Vergleiche auch nix. ;-)
MADsCIENTIST

Re: Wie Popup-Message erstellen?

Beitrag von MADsCIENTIST »

Vielen Dank für deine Antwort.

Ich habe das jetzt schon so weit wie möglich implementiert, dass es zumindest bei
normaler Desktop-Nutzung angezeigt wird und sich über bestehende Full-Screen-
Anwendungen legt.

Mein Widget habe ich mit folgenden Flags belegt:

Code: Alles auswählen

setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::Window)
Leider funktioniert noch nicht das Overlay bei Spiele-Anwendungen!
Wie kann ich das nun für OpenGL- u. DirectX-Anwendungen bewerkstelligen?
veeman
Beiträge: 280
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Wie Popup-Message erstellen?

Beitrag von veeman »

Wie wäre es mit QSystemTrayIcon
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Wie Popup-Message erstellen?

Beitrag von RHBaum »

QSystemTrayIcon hilft ihm ned weiter, da er bei spielen im Grafik vollbild modus ist .... also die menuleiste sowieso nicht sieht ^^

Einige ... aber nur Einige ....Spiele unterstuetzen "Vollbild im Fenstermodus". Das heisst, dort kann man via tab auch andere Fenser in den Vordergrund holen, und das spiel selber rendert weiter im hinterliegenden Vollbild.

Bei Spielen die nur 3d Grafik im reinen Vollbild unterstuetzen, hasst auf "normalen Weg" keine chance ...
Dort musst mit "richtiger" Overlay technik arbeiten. D.H. du musst von einem fremden prozess aus (deinem) auf das selbe Handle schreiben, wie der directX Prozess (vom Spiel).
Da gibts auch mehrere Möglichkeiten, die aber Versionsabhaengig von der directX sind ....
Such mal im Inet nach "directx dll injection" und "directX graphic overlay" und Co ... um einen ueberblick zu bekommen.
Das ist alles andere als trivial und fehlerunanfallig ...
Viele overlay Programme (steam, neuerdings auch teamspeak3 wieder, fraps .... ) haben auch aktuell probleme mit immer wieder ein paar games ^^
die Grafik ausgabe in Ressourcen anderer prozesse, in dem Falle vom Vollbild der DirectX ausgabe, ist von Microsoft nicht vorgesehen.
Dafuer gibts die Fenstertechnik und die Verwaltung dafuer(Desktop). Wenn eine DIrectX Anwendung nen Vollbild aufzieht, dann will sie allein sein, uns auch nicht von irgendwelchen Programmen gestoert werden ^^

Ciao ...
Antworten