Визуальная проблема кнопкой QPushButton

у меня есть два пользовательских-стиле QPushButton кнопки. Вот таблица стилей для :

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;
}

вот как это выглядит:

Ok button

- прекрасно. Однако, если кнопка нажата (получает фокус), она начинает выглядеть так:

Ok button focused

обратите внимание, что небольшой темный прямоугольник вокруг текста. Похоже, что текст "выбирается". Когда кнопка теряет фокус, она снова начинает выглядеть нормально. Я полагаю, это происходит потому, что выбранные элементы управления выделяются следующим образом:

enter image description here

однако я хочу, чтобы моя кнопка оставалась неизменной, независимо от того, сфокусирована она или нет. Есть ли способ решить эту проблему?

4 ответов


нашел решение. Он оказался очень простой.

проблема действительно была вызвана кнопкой, получающей фокус. Все, что мне нужно было сделать, это установить кнопку до NoFocus. Это можно сделать либо в QtDesigner:

enter image description here

или в коде:

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

после того, как это будет сделано, щелчки по кнопке не заставят его сосредоточиться, и внешний вид не изменится.


это удаляет оранжевый прямоугольник:

QPushButton:focus {
    outline: none;
}

PS: вы должны попытаться добавить некоторый стиль в состояние фокуса, как измененный цвет фона, чтобы это состояние оставалось "видимым" для пользователя.


Я не пытался, но я думаю, что вы могли бы исправить это, установив QPushButton:hover в том же стиле, что и QPushButton. Есть некоторый стиль по умолчанию, который делает кнопку Красной при наведении, вам просто нужно узнать, какой из них (вероятно,hover) и переопределить его.


здесь:http://doc.qt.io/qt-5/stylesheet-examples.html

Я нашел такие параметры, как:

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

Я не пробовал их, но это может быть то, что вам нужно.