2016-07-13 15 views
1

Ich habe eine Frage über QPushbutton Zustände Übergang.QPushbutton states Übergang: fehlende "gedrückt" Zustand

Ich leitete eine Klasse, sagen wir MyQPushButton, von QPushButton. Denn es stelle ich einige visuellen Eigenschaften durch Sheet:

Qt-Code: Ansicht wechseln

MyQPushButton 
{ 
background-color: transparent; 
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_a.png); 
} 

MyQPushButton:pressed { 
background-color: transparent; 
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_b.png); 
} 

MyQPushButton:disabled { 
background-color: transparent; 
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_d.png); 
} 

MyQPushButton:checked { 
background-color: transparent; 
border-image: url(<InstallationPath>/Resources/Images/Buttons/MyQPushButton_c.png); 
} 

in der Zwischenablage, Schalter Blick auf Klartext-Modus

Interagieren mit einer prüfbaren MyQPushButton Instanz zu kopieren, image "MyQPushButton_b" (gedrückter Zustand) erscheint nur für eine Weile, wenn Sie während des Übergangs von unmarkiert auf checked auf den nicht markierten Zustand klicken. Ich würde erwarten, das gleiche Bild für eine Weile auch durch Klicken auf es auf überprüfter Zustand zu sehen (Übergang rückwärts) wie in der Dokumentation http://doc.qt.io/qt-5/qabstractbutton.html berichtet wird:

„Wenn der Benutzer einen Toggle-Button klickt, um es zu überprüfen, die Taste wird zuerst gedrückt und dann in den aktivierten Status freigegeben. Wenn der Benutzer erneut darauf klickt (um es zu deaktivieren), bewegt sich die Schaltfläche zuerst in den gedrückten Zustand und dann in den nicht aktivierten Zustand. "

Ist meine Interpretation falsch? Umgekehrt, wie könnte ich das gedrückte Zustand "zwingen", das entsprechende Bild zu zeigen, das während des aktivierten - ungeprüften Übergangs gezeigt wird?

Danke !!!

IR

Antwort

1

ändern pressed-down. The down property umfasst jedoch sowohl den gedrückten als auch den aktivierten Status, also stellen Sie sicher, dass Ihr Stylesheet die von down vorgenommenen Änderungen vollständig überschreibt (dies ist bereits der Fall, aber dies ist nur ein N.B.).

Der "gedrückte" Status, auf den sich die Dokumentation bezieht, ist eine Nicht-Entität, die darauf hinweist, dass die Schaltfläche "down", aber nicht "checked" ist. Dies entspricht den folgenden:

if (button.isDown() && !button.isChecked()) 
    ... 

Tauchen in die Code zeigt dieser Test intern mit QPushButton::initStyleOption() verwendet wird.

+0

Hallo Jon, vielen Dank für Ihren Hinweis! Indem ich im Stylesheet einfach "gedrückt" durch "runter" ersetze (wenn ich dich gut interpretiert habe), bekomme ich keine sofortige Lösung für mein Problem. Ich bin mir jedoch sicher, dass ich Ihren Hinweis umgehen kann ... zum Beispiel indem ich einen Ereignisfilter auf Checkable MyQPushButton-Instanzen installiere und die von Ihnen vorgeschlagene Eigenschaft isDown() überprüfe! Coming news ... – ilariari

+0

Da die Schaltfläche überprüfbar ist, könnten Sie versuchen, den Status "down" * nach * "checked" in Ihrem CSS zu setzen. @ilariari –

+0

Kein Weg, auch ein neues CSS-Element einzuführen: MyQPushButton: checked [down = "true"] {... } – ilariari