SetStyleSheet to QPushButton - box-shadow



  • Hi,
    I have a question. Is there a possibility to set shadoww to the pushbutton?

    Now, I have:

    @
    button->setStyleSheet(QString::fromUtf8("QPushButton{"
    "border-style:solid;"
    "border-width: 2px;"
    "border-color: #999999;"
    "border-radius: 10px;"
    "background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
    "stop: 0 #CCCCCC, stop: 1 #AAAAAA);}";
    @

    Now I want to set box-shadow
    "link to example shadow":http://www.webmonkey.com/wp-content/uploads/2011/05/box-shadowdiff.jpg
    and I tried to set it:

    @
    "box-shadow: 10px 10px 5px rgba(182, 191, 193, 0.5);"
    @

    But there is no effect. Is it possible to set the shadow? Or I do sth wrong?



  • Hiii.

    You can use QFrame with QPushbutton and can get desired shadow effects.
    Set the following properties:-
    1)frameShape - Panel
    2)frameShadow - Raised
    3)lineWidth - 5
    4)midelineWidth - 2



  • But I also change shape of button and other properties, so I have to use setStyleSheet (I think so, if I am wrong, please correct me).



  • Only an idea:
    Perhaps you may succeed with border-style "see: ":http://www.w3.org/TR/css3-background/#border-style
    Haven't tried it yet but it seems flexible enough to paint the shadow, too (groove && / || ridge).



  • Yes, I thought about it, but I have to create couple of styles of buttons, and one of option was to use border-style:outset/inset, second option was to set border width, and now I want to add some shadow in third style.



  • You may even mix the styles for top, bottom, right & left lines with border-top-style etc.



  • Ok, I will try, thanks



  • Try this..

    QWidget vpcWidget = new QWidget();

    QPushButton *pBtn = new QPushButton();

    pBtn->setParent(vpcWidget);

    QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();

    effect->setBlurRadius(1); //Adjust accordingly

    effect->setOffset(3,3); //Adjust accordingly

    pBtn->setGraphicsEffect(effect);

    vpcWidget->show();

    Hope it helps


Log in to reply
 

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