[gelöst] QGraphicsView mit StyleSheet langsam

Alles rund um die Programmierung mit Qt
Antworten
linuQs
Beiträge: 26
Registriert: 16. August 2009 11:28

[gelöst] QGraphicsView mit StyleSheet langsam

Beitrag von linuQs »

Hallo,

nach langer Zeit mal wieder ein Eintrag von mir :)

Ich habe 2 QGraphicsView und 2 QGraphicsScenes mit einigen QGraphicsSvgItems, die animiert bewegt werden (über QPropertyAnimation)

Hier vereinfacht die Struktur:
QMainWindow -> QWidget -> QGraphicsView#1
QTabWidget -> QWidget -> QGraphicsView#2

Jetzt habe ich für beide QWidgets (siehe oben) das gleich Stylesheet gesetzt:

Code: Alles auswählen

QWidget { background:black; }
QLabel { color: yellow; font-family: "Comic Sans MS"; font: 12pt; }
QGraphicsView#1 läuft schnell und ruckelfrei, QGraphicsView#2 läuft dagegen so langsam, dass man von der Animation kaum etwas merkt

Meine Vermutung war, dass es an dem Stylesheet liegt, und wenn ich das weglasse, läuft auch QGraphicsView#2 schnell. Mich interessiert nur, warum es mit dem StyleSheet so langsam läuft und woher der Performance-Unterschied kommt, weil ich eigentlich StyleSheets verwenden wollte :wink:
Zuletzt geändert von linuQs am 27. April 2011 22:01, insgesamt 1-mal geändert.
linuQs
Beiträge: 26
Registriert: 16. August 2009 11:28

Beitrag von linuQs »

kleiner Nachtrag:
Habe gerade festgestellt, dass auch QGraphicsView#2 mit StyleSheet gut funktioniert. Es scheint allerdings Probleme zu geben, wenn das QGraphicsView das StyleSheet von einem übergeordneten QWidget erbt. Und das auch scheinbar nur im QTabWidget, denn bei QGraphicsView#1 im QMainWindow (erbt StyleSheet ebenfalls von QWidget) funktioniert es ja.
Sorry, habe gerade echt keine Idee warum das nur in einem so bestimmten Kontext Probleme macht :?, wäre nett wenn mir jemand irgendwie auf die Spürnge helfen könnte
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag von Uwe »

Sobald Du einen StyleSheet zuweist ändern sich einige Eigenschaften, die einen Einfluss auf das Zeichnen haben z.B Qt::WA_OpaquePaintEvent wird weggenommen. Das hat wohl damit zu tun, dass Qt davon ausgeht evtl gerundete Ränder zu haben und die Bereiche ausserhalb mit den darunter liegenden Widgets befüllen muss.

In Qwt habe ich einen Riesen Aufwand betreiben müssen um die ganzen Performance Probleme in Verbindung mit StyleSheets in den Griff zu bekommen, was u.a. so problematisch ist, weil es keine Schnittstellen zum Abfragen der aktuell gesetzten StyleSheets gibt.

Mein Tip: lass in Deiner Situation besser die Finger von StyleSheets.

Uwe

PS: In Verbindung mit einem Parent mit einem Hintergrund mit Gradient hast Du z.B bereits ein ernsthaftes Performance Problem unter X11.
linuQs
Beiträge: 26
Registriert: 16. August 2009 11:28

[gelöst] QGraphicsView mit StyleSheet langsam

Beitrag von linuQs »

Danke für die Antwort!
Ich denke ich werde es wohl wirklich ohne StyleSheet versuchen, oder zumindest das QGraphicsView auslassen, obwohl ich bisher noch keine derartigen Probleme damit hatte.
PS: ich arbeite unter X11 :wink:
Antworten