QT Transparenter QToolButton



  • Hallo Leute

    ich habe auf meinem Widget ein Background-Image.
    Auf diesem Widget solle eine transparente QToolBar liegen, die sich über die komplette Breite des QVBoxLayouts zieht, was aber irgendwie auch nicht so richtig funktioniert.

    Diese ToolBar soll nun wiederum mit QToolButtons besetzt werden, die wiederum komplett ohne Rand sind und deren Icons auch transparent sind.

    Die Icons sind pngs, die aus einem Schriftzug und einer Hintergrundfarbe bestehen.
    Die Hintergrundfarbe wiederum habe ich mittels GIMP als Transparent gesetzt.
    Aus meiner Sicht sind die Icons soweit in Ordnung. Die werden im GIMP korrekt als transparent dargestellt.

    mein Stylesheet sieht so aus:

    QToolBar {
        border: 0px;
        background: transparent;
    }
    
    QToolButton {
        background: transparent;
    }
    

    Mein Sourcecode zur Erzeugung von QToolBar und QToolButton sieht so aus:

    ui->vlltMain->setContentsMargins( 0, 0, 0, 0 );
        ui->vlltMain->setSpacing( 0 );
    
        ui->vlltMain->addStretch( 1 );
    
        mainToolBar = new QToolBar( this );
        mainToolBar->setBaseSize( 500, 64 );
        mainToolBar->setIconSize( QSize( 128, 64 ) );
        mainToolBar->setFixedHeight( 64 );
        mainToolBar->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding );
    
        QToolButton *btn1 = new QToolButton( this );
        btn1->setGeometry( 0, 0, 128, 64 );
        btn1->setIconSize( QSize( 128, 64 ) );
        btn1->setIcon( QIcon( QPixmap( ":/icons/ticker" ) ) );
    
        mainToolBar->addWidget( btn1 );
    
        ui->vlltMain->addWidget( mainToolBar, 0, Qt::AlignCenter );
        ui->vlltMain->addStretch( 2 );
    

    Folgende Probleme:

    QToolBar liegt zwar in QVBoxLayout, expanded aber nicht über die komplette Breite. FixedHeight scheint zu passen.

    QToolBar ist nicht transparent. Nimmt scheinbar die Farbe eines Pixels des Hintergrundbildes an, aber nimmt diese Farbe großflächig als Hintergrundfarbe.

    QToolButton ist nicht transparent. Das Bild wird dargestellt, aber der transparente Teil des Icons wird mit einer merkwürdigen Misch-Farbe dargestellt, die keiner von mir ausgewählten Farbe entspricht. Also quasi komplett daneben...

    Ich bin ehrlich und gebe zu, dass ich in Sachen Design in QT noch sehr unbeholfen unterwegs bin.

    Hat jemand einen guten Tipp für mich, wie man generell an solche Transparenzanliegen herangeht? Scheinbar habe ich so ziemlich alles falsch gemacht 😃



  • Anmerkung: Wenn ich das Hintergrundbild weglasse, sondern einfach nur eine Farbe wähle, ist die Toolbar transparent... Es scheint also daran zu liegen, dass die Transparenz der ToolBar nicht so richtig funktioniert, bzw nur bei einer Farbe.

    Mein Hintergrundbild besteht aus verschiedenen blautönen und er scheint einen davon auszuwählen und mit diesem die komplette QToolBar zu färben.



  • Ich habe das Problem nochmals genauer betrachtet und festgestellt, dass der Hintergrund der Toolbar scheinbar die Farbe des obersten Pixels aus der gleichen Spalte ( 0 | y ) des MainWindows/Centralwidget ( Parent und Owner der ToolBar ). Und das zieht sich von y = 0 bis zum rechten Rand.

    Kann solche Beobachtungen jemand bestätigen, der sich auch schonmal an
    Transparent mit nicht einfarbigen Hintergrundbildern versucht hat?

    Vielleicht hab ich auch einen Knick in der Optik, denn die Farbunterschiede in meinem Hintergrundbild sind eher nicht so ausgeprägt.


Log in to reply