PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Qt]Transparentes Dialog-Fenster



HeReSY
21-01-2009, 18:00
Hi,

wie kann ich den Hintergrund eines Dialogfensters transparent gestalten?
Habe es bereits mit setWindowOpacity() probiert, was auch funktioniert, nur das Problem ist, dass eben auch sämtliche Widgets innerhalb des Dialoges transparent sind. Es würde auch gehen, wenn ich wüsste, wie man die Kindsfenster wieder normal setzten würde, doch ein setWindowOpacity(1.0) funktioniert einfach nicht. Langsam verzweifle ich ein wenig dabei. Wäre für jede Hilfe dankbar.

HeReSY

Boron
21-01-2009, 18:39
Was ist der "Hintergrund" eines Dialogs?
Meinst du das in etwas so:
Angenommen der Dialog enthält einen Button und ein Textfeld, dass dann nach dem Einstellen der Transparenz nur noch Button und Textfeld sichtbar bleibt, und alles andere (auch Fensterdekoration unsichtbar wird)?

Ich habe das auch mal ausprobiert:
CanTerm.setWindowOpacity( 0.5 );
CanTerm.ui.textEdit->setWindowOpacity( 1.0 );CanTerm ist mein QMainWindow. ui ist das Objekt, das die Oberflächenelemente (z.B. den QTextEdit) enthält.
Trotz der zweiten Zeile wird der TextEdit auch halbtransparent. Es sieht also so aus, als ob die Opazität des obersten Widgets immer an die Childwidgets weitergegeben wird. Selbst wenn für diese ein abweichender Wert gesetzt wird.
(Bei mir Qt-4.4.3)

undefined
21-01-2009, 22:20
Seit QT 4.1 machst du so etwas über Attribute.


setAttribute ( Qt::WA_NoBackground, true );
setAttribute ( Qt::WA_StyledBackground, false );
setAttribute ( Qt::WA_OpaquePaintEvent, true );
setAttribute ( Qt::WA_X11NetWmWindowTypeDesktop, false );