PyQt - Mache QAction checkbar, auch wenn es deaktiviert ist

8

Ich möchte eine QAction, die ein leicht verändertes Verhalten hat. Ich möchte, dass die QAction nur dann ein Signal aussendet, wenn sie aktiviert ist, und ich möchte auch, dass ihre Checkbox immer überprüfbar ist, selbst wenn die QAction deaktiviert wurde. Wenn Sie beispielsweise eine QAction auf setEnabled (False) setzen, können Sie nicht auf die QAction klicken oder sie aktivieren / deaktivieren. Ich mag es, dass es nicht mehr geklickt werden kann, aber ich mag es nicht, dass ich das Kontrollkästchen in der QAction nicht aktivieren kann. Ist es möglich, es zu ändern, um zu bekommen, wonach ich suche?

Ich habe unten eine Beispieldatei angehängt. Das Ziel ist es, eine Lösung zu finden, bei der QAction auf deaktiviert gesetzt ist (setEnabled (False)), aber der Benutzer kann es immer noch aktivieren / deaktivieren.

%Vor%     
ColinKennedy 24.04.2017, 19:58
quelle

1 Antwort

2

Da Sie immer noch in der QAction klicken können, um das Kontrollkästchen zu aktivieren und zu deaktivieren, denke ich nicht, dass es notwendig wäre, die QAction zu deaktivieren. Stattdessen könnten Sie einfach das Aussehen ändern. Hast du versucht, mit Stylesheet herumzuspielen?

Versuchen Sie einfach diese einfache Zeile in Ihrem Code hinzuzufügen:

%Vor%

Was ich hier sagen will, ist, dass Sie den Stil Ihrer Aktion nach Ihrem Willen ändern können.

Sie können auch etwas ausgefeilteres und spezifischeres ausprobieren, die obige Zeile ändert jeden Text in Ihrem Menü in grau, Sie können angeben, welche Art von Objekt die Schriftfarbe ändern soll und vieles mehr, zum Beispiel:

%Vor%

und so weiter ...

Du könntest einige andere Ansätze ausprobieren, um zu erreichen, was du willst, manchmal stecken wir einfach in etwas fest und es gibt andere Wege, dasselbe zu tun. Schau schnell in diesen Teil des Codes, den ich modifiziert habe, der etwas ähnlich zu dem macht, was du willst, denke ich ")

%Vor%

Da das erste Beispiel von Stylesheets, das ich Ihnen gegeben habe, einen Fehler hat, weil QAction kein Widget ist, kann ich sein Stylesheet nicht ändern (es hat keins), also musste ich das Menü-Stylesheet ändern, was sich auswirken würde jeder andere. Dieses zweite Beispiel benutzt QCheckBox, welches ein Widget ist, so dass ich sein Stylesheet spezifisch ändern kann und ich habe eine bessere Kontrolle über jedes einzelne Element im Menü: D

    
yurisnm 03.05.2017 12:41
quelle

Tags und Links