Forum: PC-Programmierung PyQt Stylesheet


von Michael (Gast)


Lesenswert?

Hallo Forum,

ich hoffe ich kann mein Problem beschreiben:

Mit dem QtCreator habe ich mir eine Oberfläche zusammengeklickt, unter 
anderen werden QPushButtons in Verbindung mit Stylesheets verwendet.
1
#btn_database{
2
background-color:transparent;
3
border-image: url(./ui/btn_off.png);
4
5
}
6
#btn_database:checked{
7
border-image: url(./ui/btn_on.png);
8
}


Starte ich nun das Skript, dann sehe ich auch btn_off.png auf meiner 
Oberfläche, beim Betätigen wird im Skript mittels setChecked( True ) 
"umgeschaltet" und ich sehe btn_on.png. Soweit alles prima.
Nun bin ich einen Schritt weiter gegangen und habe eine Textdatei 
geparst und je nach Inhalt dieser Datei setChecked() mit True oder False 
aufgerufen. Auch hier klappt alles wie erwartet. Das Parsen der Datei 
wurde über einen weiteren QPushButton ausgelöst.
Jetzt zum Problem: Ich habe eine QMenuBar eingefügt und mittels QAction 
verschiedene Einträge in der MenuBar platziert. Wähle ich einen Eintrag 
aus, dann wird die oben genannte Textdatei aufgerufen und geparst und 
anhand dessen wird wieder setChecked aufgerufen. Jetzt habe ich das 
Problem, wenn False übergeben wird, dann wird btn_off.png gezeichnet, 
bei True kommt kein Bild mehr. Selbst wenn ich den Button klicke, dann 
wird nur btn_off.png gezeichnet. btn_on.png scheint unsichtbar zu sein, 
obwol der QPushButton checked ist, wurde mittels Funktion isChecked() 
überprüft. Weiterhin ist interessant, wenn ich zuerst den Button 2 mal 
drücke und dann über die MenuBar die Aktion aufrufen, dann wird das Bild 
richtig gezeichnet, egal ob setChecked() True oder False aufgerufen 
wurde.

Kann einer das Problem nachvollziehen?

Danek im Voraus!

Gruß Michael

von guest (Gast)


Lesenswert?

Wechselst Du beim Laden Deiner Textdatei das Verzeichnis?
Dann könnte es sein, daß dann die Pfade im Stylesheet nicht mehr passen.

von Michael (Gast)


Lesenswert?

Hallo,

ja das tue ich. Ich schaue dann mal, ob es daran liegt. Vielen Dank 
schon einmal.

Gruß

von Michael (Gast)


Lesenswert?

Tatsache, genau das war mein Problem. Glaube ich gehe dann vom 
Stylesheet weg und mache es über Pixmaps.
Vielen Dank!!!

von Rolf M. (rmagnus)


Lesenswert?

Michael schrieb:
> Tatsache, genau das war mein Problem. Glaube ich gehe dann vom
> Stylesheet weg und mache es über Pixmaps.
> Vielen Dank!!!

Und was macht das für einen Unterschied? Wenn der Pfad nicht stimmt, 
findet er sie auch ohne Stylesheet nicht.
Dafür gibt's ja auch die Searchpaths
https://doc.qt.io/qt-5/qdir.html#setSearchPaths

von Sven B. (scummos)


Lesenswert?

Ein Stylesheet gehört idR in eine resource collection (qrc).

von Rolf M. (rmagnus)


Lesenswert?

Sven B. schrieb:
> Ein Stylesheet gehört idR in eine resource collection (qrc).

Naja, der Vorteil von einem Stylesheet ist doch, dass ich es ändern 
kann, ohne das Programm neu compilieren zu müssen. Wenn ich es in die 
resources packe, geht genau das aber nicht mehr.

von Sven B. (scummos)


Lesenswert?

Hm, kann man vermutlich so sehen. Ich sehe den Vorteil eher darin, dass 
ich das Aussehen von UI-Elementen in einem bestimmten Rahmen 
beeinflussen kann ohne ein 10 kLoc Style-Plugin zu schreiben ...

Wollte ich Benutzer-editierbare Stylesheets anbieten, würde ich einen 
Einstellungsdialog bauen, wo man den Pfad zu einem eigenen auswählen 
kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.