2016-09-21 1 views
0

Wie gecheckt QPushButton aussehen wie beim Drücken? Wie folgt aus:Wie gechecktes QPushButton aussieht wie beim Drücken?

enter image description here

Dies ist ein Bild von der gedrückten Taste. Was soll ich im Stylesheet schreiben?

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

Ich versuchte Grenze wie keine zu schreiben, aber ich habe gerade dies:

enter image description here

Und ich brauche Grenzen gleich bleiben.

+0

Soll der 'QPushButton' immer so aussehen, wie er gedrückt wird? Wenn ja, warum verwenden Sie nicht ['setCheckable (true)'] (https://doc.qt.io/qt-5/qabstractbutton.html#checkable-prop) und ['setChecked (true)'] (https://doc.qt.io/qt-5/qabstractbutton.html#checked-prop)? – Mike

+0

Versuchen Sie Grenzen für alle Selektoren zu setzen, nicht nur für 'QPushButton: checked' –

+0

Punkt ist, dass ich diese Grenzen brauche, wie auf dem ersten Bild. Und ich brauche die gleiche Hintergrundfarbe. Wenn ich keine Grenze einstelle - keine, dann verliere ich meine Hintergrundfarbe. Es wird seltsam, etwas Weißes und Transparentes. –

Antwort

0

Dies liegt daran, dass QPushButton: pressed standardmäßig einen eigenen Rahmen hat, der nativ auf Ihrem Betriebssystem basiert.

Um dies zu umgehen, können Sie die QPushButton: gedrückten Rahmen auf etwas sehr ähnlich wie es jetzt aussieht, dann setzen Sie den gleichen Rahmen für QPushButton: aktiviert.

Es scheint mir, dass es ein 1px breiter, schwarzer, eingesetzter Rand ist, also sollte so etwas den Trick machen.

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