Seite 1 von 1

Transparent + Label

Verfasst: 13. Februar 2006 10:54
von Red_Hood
Guten Tag zusammen!
Die Beiträge über den transparenten Hintergrund bei einem QWidget habe ich mir durchgelesen! Ich habe das Problem dass ich den transparenten Hintergrund für ein QLabel benötige!

Meine Frage: Funktioniert es genauso wie beim QWidget oder muss ich da noch mehr Sachen beachten??

:roll: :roll:

Würde mich sehr freuen, wenn mir jemand helfen könnte!
Danke!

MfG
Red_Hood
(Azubi im ersten Ausbildungsjahr)

Re: Transparent + Label

Verfasst: 13. Februar 2006 13:15
von macman
Red_Hood hat geschrieben:Meine Frage: Funktioniert es genauso wie beim QWidget oder muss ich da noch mehr Sachen beachten??
Hast Du es schon probiert?

Verfasst: 13. Februar 2006 14:28
von Red_Hood
Hallo Macman!
Ich habe den Quellcode überarbeitet und es funktioniert nicht!!!
Muss man die transparente Farbe selbst erstellen oder ist die schon bei Qt fest definiert??

MfG
Red_Hood

Verfasst: 13. Februar 2006 18:08
von macman
Red_Hood hat geschrieben:Ich habe den Quellcode überarbeitet und es funktioniert nicht!!! Muss man die transparente Farbe selbst erstellen oder ist die schon bei Qt fest definiert??
Da ein QLabel auch nur ein QWidget ist, sollte es damit auch so funktionieren. Ansonsten gib mehr Code, ich habe keine Lust selbst was zu schreiben :)

Verfasst: 14. Februar 2006 15:19
von Red_Hood
Den Code habe ich aus diesem Forum entnohmen:

Code: Alles auswählen

# include <QWidget>
# include <QBrush>
# include <QPixmap>
# include <QColor>
# include <QPalette>

void SignalDiagram::SetBackgroundImage ( QWidget *fp_widget, const QPixmap *fp_image )
{
   QPalette newPalette = fp_widget->palette ( );
   newPalette.setBrush
   ( QPalette::Base,QBrush ( *fp_image ));

   newPalette.setBrush
   (QPalette::Background,QBrush ( *fp_image ));

   fp_widget->setPalette ( newPalette );
}

QBrush BrushSetAlpha ( QBrush f_brush, const int f_alpha )
{
   QColor color = f_brush.color ( );
   color.setAlpha ( f_alpha );
   f_brush.setColor ( color );

   return f_brush;
}

void SignalDiagram::SetTransparency ( QWidget *fp_widget, bool f_transparent )
{
   int alpha ( 255 );

   if ( f_transparent )
      alpha = 0;

   QPalette newPalette = fp_widget->palette ( );

   newPalette.setBrush ( QPalette::Base, BrushSetAlpha ( newPalette.base ( ), alpha ) ); 
   newPalette.setBrush ( QPalette::Background, BrushSetAlpha ( newPalette.background ( ), alpha ) );

Fehlermeldung: Base ist kein Element von QPalette
Background ist kein Element von QPalette

Hast du en Lösungsweg?

Verfasst: 14. Februar 2006 16:31
von macman
Red_Hood hat geschrieben:Den Code habe ich aus diesem Forum entnohmen:
Dann frag halt mal den Urheber, der übrigens dabei geschrieben hat das es sich um gekürzten Code handelt.
Red_Hood hat geschrieben:Hast du en Lösungsweg?
Ohne was Nachvollziehbares? Nein.

Verfasst: 16. Februar 2006 01:59
von Esleborn
ähm welche qt Version verwendest du? Obiger Code tut für 4.*... es kann sein, dass QLabel noch einige weitere ColorRoles setzen muss, glaub aber das geht so... (vllt QPalette::HighlightedText?)

Elgrimm Esleborn

Verfasst: 16. Februar 2006 08:40
von Red_Hood
Hallo Esleborn!!!
Ich benutze die 2.3 Version. Kommen diese Fehlermeldungen jetzt daher, weil ich ne andere Version benutze?

MfG
Red_Hood

Verfasst: 16. Februar 2006 09:16
von macman
Red_Hood hat geschrieben:Ich benutze die 2.3 Version. Kommen diese Fehlermeldungen jetzt daher, weil ich ne andere Version benutze?
Na das ist doch mal jemand mit Humor. Erwartet aktuelle Techniken in einer 5 Jahre alten Version :)

Verfasst: 16. Februar 2006 12:20
von Esleborn
ähm auf Anhieb würd ich sagen, ja das liegt daran :)