Transparenz QToolBar

Alles rund um die Programmierung mit Qt
Antworten
tsluga
Beiträge: 16
Registriert: 25. Januar 2006 02:15

Transparenz QToolBar

Beitrag von tsluga »

Ich habe ein Problem mit der Transparenz einer QToolBar

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();
}
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.
Skype-User : tsluga
Antworten