How to make brackground transparent



  • I've built a custom QScrollArea-based widget, but it's default background was some color. I'd like to make background transparent so that it could display widgets which were even under it if overlapped.
    However I didn't see there's a transparent role in setBackgroundRole(), then how could I do?

    thx.



  • You can try, setting these attributes on the widget:

    setAttribute(Qt::WA_NoBackground);

    setAttribute(Qt::WA_NoSystemBackground);

    setAttribute(Qt::WA_TranslucentBackground);

    additionally, you could set setAutoFillbackground(false).



  • setAutoFillBackground didn't simply work.
    WA_NoBackground was obsolete and the successor WA_OpaquePaintEvent said in opposite way, and didn't work either.
    WA_NoSystemBackground and WA_TranslucentBackground ended up with a little bit repainting issue, since it never automatically updated newly exposed area, for instance. Then the tough part would turn to that I have to paint everything underneath the widget.

    If memory severed me, QFrame is by default transparent, don't know how it get that.

    [quote author="Gerolf" date="1295255973"]You can try, setting these attributes on the widget:

    setAttribute(Qt::WA_NoBackground);

    setAttribute(Qt::WA_NoSystemBackground);

    setAttribute(Qt::WA_TranslucentBackground);

    additionally, you could set setAutoFillbackground(false).[/quote]



  • I hope you know that a QScrollArea consists of two widgets?
    it has the scroll area itself and the viewport widget. Both must be transparent....



  • I was aware of that. I set those attribute on both widget.

    [quote author="Gerolf" date="1295265476"]I hope you know that a QScrollArea consists of two widgets?
    it has the scroll area itself and the viewport widget. Both must be transparent....[/quote]



  • its little bit old, but the problem seems to be still up to date.

    if you use

    scroll->setStyleSheet("background-color:transparent;");

    its working pretty good, but the "Scroll Bar" is getting transparent too,
    making it pretty hard to scroll.

    if someone knows how to fix it, please post.



  • try adding
    @scroll->verticalScrollBar()->setStyleSheet("border, background and what else you need")@



  • maybe it would work, but there is a syntax error
    @scroll->verticalScrollBar()->setStyleSheet("...")@

    "pointer-to-incomplete"



  • my fault, I didnt
    #include <qscrollbar.h>

    @scroll_gunshop->verticalScrollBar()->setStyleSheet("background-color:red");@

    but there is still a little "pattern" in there.
    the part where the scroll bar is not covered.

    http://img534.imageshack.us/img534/2594/ddddiw.jpg

    but looks almost perfect.

    thanks*

    € or maybe this is just the normal "natural" scroll bar pattern
    if you use white it's gone.



  • You can customize everything in the scrollbar just by using css... try taking a look "here":http://doc.qt.digia.com/qt/stylesheet-examples.html#customizing-qscrollbar and try out different css commands...



  • hope this will be helpful to you

    setAttribute(Qt::WA_TranslucentBackground);
    
    setAttribute(Qt::WA_NoSystemBackground,false);
    
    setWindowFlags(Qt::FramelessWindowHint);
    
    setStyleSheet("font-weight:bold;color:white;"
                  "background-color: rgba(0,0,0,80%);"
                  "font: bold 20px;"
                  "font-weight:bold;"
                  );


  • QPalette pal;
    pal.setColor(QPalette::Window,QColor(0,0,0,0));
    z_scroll->setPalette(pal);
    z_scroll->setBackgroundRole(QPalette::Window);
    z_scroll->widget()->setPalette(pal);
    z_scroll->widget()->setBackgroundRole(QPalette::Window);


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.