ich hatte das Problem, dass ich QWidgets mit transparenten Hintergrund oder einem Hintergrundbild ausstatten wollte... die Frage kam glaub ich auch mehrfach in diesem Forum auf...
wie auch immer hier der Code, vereinfacht auf das Nötigste, mit dem man mit dem Aufruf einer einfachen Funktion das nötige durchführt.
Code: Alles auswählen
# include <QWidget>
# include <QBrush>
# include <QPixmap>
# include <QColor>
# include <QPalette>
void 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 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 ) ); // sollte rausgeschmissen werden, wenn Textfelder sonst zu unleserlich sind.
newPalette.setBrush ( QPalette::Background, BrushSetAlpha ( newPalette.background ( ), alpha ) );
fp_widget->setPalette ( newPalette );
}
Ich werd meine Umsetzung in Form von Klassen für QWidgets, QMainWindow und QToolBar abgeleitete Klassen hier posten, sobald ich das letzte Problem mit den ToolBars gelöst habe. Diese Klassen werden dann einfache Funktionen haben, alle "Childwidgets"/sich selbst zwischen (hintergrund-)transparent und "Normal" switchen zu lassen, Hintergrundbilder einzubetten und Masken zu setzen (erstmal auf die Betriebssysteme die setMask effektiv unterstützen beschränkt).
Ich weiß, dass sind alles Kleinigkeiten, die man sich selbst schnell geschrieben hat, aber ich find es grad für Qt-Newbies wie mich recht geschickt, dass einfach durch den Aufruf einer kleinen Funktion, zu erledigen, ohne sich um Paletten kümmern zu müssen, man ist ja faul *grins...
Ich hoff mal das hilft irgendwem *grins
Elgrimm Esleborn