Reputation: 29976
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:
which is fine. However, if the button is clicked (gets focus), it starts to look like this:
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:
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
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
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
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:
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
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