SingerOfTheFall
SingerOfTheFall

Reputation: 29976

QPushButton visual issue

I have two custom-styled QPushButton buttons. Here is the stylesheet for the Ok button:

QPushButton
{ 
    background-color:#9dce2c;
    border-radius:7px;
    border:1px solid #83c41a;
    color:#ffffff;
    font-size:15px;
    font-weight:bold;
    padding:4px 24px;
    text-decoration:none;
}
QPushButton:pressed
{
    border:2px solid black;
}

Now here's what it looks like:

Ok button

which is fine. However, if the button is clicked (gets focus), it starts to look like this:

Ok button focused

Note that slight shadowy rectangle around the text. It looks as if the text is being "selected". When the button loses focus, it starts looking normal again. I suppose it happens because the selected controls get highlighted like this:

enter image description here

However, I want my button to stay unchanged, no matter whether it's focused or not. Is there any way to solve this issue?

Upvotes: 6

Views: 5327

Answers (4)

kolenda
kolenda

Reputation: 2811

Here: http://doc.qt.io/qt-5/stylesheet-examples.html

I've found parameters like:

"selection-color: yellow;"
"selection-background-color: blue;"

I haven't tried them but it might be what you need.

Upvotes: 0

Mmmh mmh
Mmmh mmh

Reputation: 5470

This removes the orange rectangle :

QPushButton:focus {
    outline: none;
}

PS : You should try to add some style to the focus state like a changed background-color so that this state stays "visible" to the user.

Upvotes: 4

SingerOfTheFall
SingerOfTheFall

Reputation: 29976

Found the solution. It turned out to be very simple.

The issue was indeed caused by the button receiving focus. All I needed to do is set the button's focusPolicy attribute to NoFocus. It can be done either in QtDesigner:

enter image description here

or in the code:

ui.okButton->setFocusPolicy(Qt::NoFocus);

After it's done, the clicks on the button will not cause it to get focus, and the appearance will not change.

Upvotes: 3

laurent
laurent

Reputation: 90853

I didn't try but I think you could fix that by setting QPushButton:hover to the same style as QPushButton. There's some default style that makes the button red on hover, you just need to find out which one it is (probably hover) and override it.

Upvotes: 0

Related Questions