2016-09-21 7 views
0

Как сделать проверенный QPushButton выглядеть так же, как при нажатии? Как это:Как сделать проверенный QPushButton выглядеть так же, как при нажатии?

enter image description here

Это изображение нажатой кнопки. Что я должен писать в таблице стилей?

"QPushButton:pressed {" 
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," 
             "stop: 0 #dadbde, stop: 1 #f6f7fa);}" 
"QPushButton:checked {" 
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," 
            "stop: 0 #dadbde, stop: 1 #f6f7fa);" 
"border: none;}" 

Я попытался написать границу, как никто, но я только что получил это:

enter image description here

И мне нужно границы остаются прежними.

+0

Вы хотите, чтобы 'QPushButton' всегда выглядел так, как будто он нажат? Если да, почему бы вам не использовать ['setCheckable (true)'] (https://doc.qt.io/qt-5/qabstractbutton.html#checkable-prop) и ['setChecked (true)'] (https://doc.qt.io/qt-5/qabstractbutton.html#checked-prop)? – Mike

+0

Попробуйте установить границы для всех селекторов, а не только для 'QPushButton: checked' –

+0

Точка в том, что мне нужны эти границы, как на первом изображении. И мне нужен тот же цвет фона. Если я не устанавливаю границу - нет, я теряю свой фоновый цвет. Странно, что-то белое и прозрачное. –

ответ

0

Это потому, что по умолчанию QPushButton: нажата имеет свою собственную границу, которая устанавливается изначально на основе вашей ОС.

Чтобы обойти это, вы можете установить QPushButton: нажатая рамка на что-то очень похожее на то, как оно выглядит сейчас, а затем установить ту же границу для QPushButton: checked.

Мне кажется, что это 1px широкая, черная, вставка границы, поэтому что-то подобное должно делать трюк.

"QPushButton:pressed {" 
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," 
             "stop: 0 #dadbde, stop: 1 #f6f7fa);" 
"border: 1px inset black;}" 

"QPushButton:checked {" 
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," 
            "stop: 0 #dadbde, stop: 1 #f6f7fa);" 
"border: 1px inset black;}"