Hallo,
ich möchte gerne einen (Login-) Dialog bauen, der sich über das Hauptapplikationsfenster legt. Der Hintergrund des Dialogfensters soll halbtransparent sein. Somit würde die restliche Anwendung quasi "abgedunkelt" und der focus liegt auf der dialogeingabe.
Ich habe es bisher erfolglos mit einem abgeleiteten QDialog versucht. Leider wird der Dialog standartmäßig in einem "fenstergrau" gezeichnet. So das eine überschriebene paintEvent funktion nur den grauen hintergrund überzeihnen kann.
ich habe schon
this->setAutoFillBackground(false);
und
this->setWindowOpacity (1);
und
newPalette.setBrush ( QPalette::Background, BrushSetAlpha ( newPalette.base ( ), alpha ) );
this->setPalette ( newPalette );
probiert. Alles erfolglos der hintergrund ist immer grau!
wie kann ich oben genanntes problem lösen? gibt es eine option unabhängig von irgendwelchen Layouts ein Widget übergeordnet zu platzieren?
vielen Dank
transparenter modaler dialog
-
CaptnChaos
- Beiträge: 605
- Registriert: 28. Juni 2007 15:01
- Kontaktdaten:
nein das klappt auch nicht.
Es kann doch nicht so schwer sein, sein gesamtes applikationsfenster abzudunkeln und darauf einen eingabedialog zu setzen. Entweder ich denke hier zu kompliziert um die Ecke oder ich weiss auch nicht?
Vielleicht habe ich mich irgendwie falsch ausgedrückt.
Ich habe eine ganz normale Anwendung, die aus vielen kleinen schaltflächen und fensterchen besteht. Nun möchte ich, dass wenn man einen bestimmten knopf drückt (benutzer anmelden) die Oberfläche der Anwendung etwas abgedunkelt wird (grauschleier) und in der mitte vom Bildschirm eine Eingabemaske erscheint. Nachdem der Benutzer sich angemeldet hat (resp. sein level geändert) soll der Grauschleier wieder verschwinden.
Eigentlich doch gar nicht so schwer ? Kann man denn unabhängig von festen Layouts irgendwie auf seine Anwendung draufzeichen?
ich versuche mich jetzt schon seit 3 tagen daran und ich finde einfach keine lösung?
Es kann doch nicht so schwer sein, sein gesamtes applikationsfenster abzudunkeln und darauf einen eingabedialog zu setzen. Entweder ich denke hier zu kompliziert um die Ecke oder ich weiss auch nicht?
Vielleicht habe ich mich irgendwie falsch ausgedrückt.
Ich habe eine ganz normale Anwendung, die aus vielen kleinen schaltflächen und fensterchen besteht. Nun möchte ich, dass wenn man einen bestimmten knopf drückt (benutzer anmelden) die Oberfläche der Anwendung etwas abgedunkelt wird (grauschleier) und in der mitte vom Bildschirm eine Eingabemaske erscheint. Nachdem der Benutzer sich angemeldet hat (resp. sein level geändert) soll der Grauschleier wieder verschwinden.
Eigentlich doch gar nicht so schwer ? Kann man denn unabhängig von festen Layouts irgendwie auf seine Anwendung draufzeichen?
ich versuche mich jetzt schon seit 3 tagen daran und ich finde einfach keine lösung?
welches Betriebssystem?
this->setWindowOpacity (0.5);
führt eig. genau zu dem was du möchtest!
This feature is available on Embedded Linux, Mac OS X, X11 platforms that support the Composite extension, and Windows 2000 and later.
This feature is not available on Windows CE.
Note that under X11 you need to have a composite manager running, and the X11 specific _NET_WM_WINDOW_OPACITY atom needs to be supported by the window manager you are using.
Warning: Changing this property from opaque to transparent might issue a paint event that needs to be processed before the window is displayed correctly. This affects mainly the use of QPixmap::grabWindow(). Also note that semi-transparent windows update and resize significantly slower than opaque windows.
this->setWindowOpacity (0.5);
führt eig. genau zu dem was du möchtest!
This feature is available on Embedded Linux, Mac OS X, X11 platforms that support the Composite extension, and Windows 2000 and later.
This feature is not available on Windows CE.
Note that under X11 you need to have a composite manager running, and the X11 specific _NET_WM_WINDOW_OPACITY atom needs to be supported by the window manager you are using.
Warning: Changing this property from opaque to transparent might issue a paint event that needs to be processed before the window is displayed correctly. This affects mainly the use of QPixmap::grabWindow(). Also note that semi-transparent windows update and resize significantly slower than opaque windows.