Transparenz QToolBar
Verfasst: 29. September 2006 20:33
Ich habe ein Problem mit der Transparenz einer QToolBar
Der Hintergrund der ToolBar soll aus dem Bild "back.jpg" geladen werden, es passiert aber nichts. Ich habe hier schon die Beiträge gelesen und hoffe jemand kann man Fehler korrigieren.
Code: Alles auswählen
#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QToolBar>
#include <QtGui/QPixmap>
#include <QtGui/QAction>
// Klasse MainFrame
class MainFrame : public QMainWindow
{
public:
MainFrame();
private:
QToolBar *toolBar;
QAction *testAct;
void initToolBar(void);
void SetBackgroundImage ( QWidget *fp_widget, const QPixmap *fp_image);
void SetTransparency ( QWidget *fp_widget, bool f_transparent );
QBrush BrushSetAlpha ( QBrush f_brush, const int f_alpha );
};
// Konstruktor
MainFrame::MainFrame()
:toolBar(new QToolBar()),
testAct(new QAction(toolBar))
{
initToolBar();
showMaximized();
addToolBar(toolBar);
}
// Aus QT-Forum
QBrush MainFrame::BrushSetAlpha ( QBrush f_brush, const int f_alpha )
{
QColor color = f_brush.color ( );
color.setAlpha ( f_alpha );
f_brush.setColor ( color );
return f_brush;
}
// Aus QT-Forum
void MainFrame::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 );
}
// Aus QT-Forum
void MainFrame::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 );
}
//ToolBar erstellen
void MainFrame::initToolBar(void)
{
QPixmap map("back.jpg");
testAct->setIcon(QIcon("test.png"));
SetBackgroundImage(toolBar,&map);
SetTransparency(toolBar,true);
testAct->setToolTip("TestAct");
toolBar->addAction(testAct);
}
// main Funktion
int main(int argc, char **argv)
{
QApplication app(argc, argv);
MainFrame frame;
frame.show();
return app.exec();
}