(gelöst?) kUbuntu 10.10 redrawing Probleme ...

Alles rund um die Programmierung mit Qt
Antworten
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

(gelöst?) kUbuntu 10.10 redrawing Probleme ...

Beitrag von Ritchie » 17. Februar 2011 20:02

Hallo Leute,

ich suche derzeit wie verrückt in meiner Redrawing Funktion (recbounding) einen Fehler.
Teilweise/Zeitweise wird das Fenster nicht mehr korrekt neu gezeichnet.

Derzeit habe ich auch das Problem, das der Desktop mir teilweise mitten in den Bildschirm schreiben oder nicht mehr neu zeichnen. Taskbar Info wird hierbei irgendwo im Bildschirm gezeichnet.

Hat jemand ähnlich Erfahrungen gemacht, oder habe ich doch noch irgendwo ein Bug.

z.B fahre ich mit einem anderen Fenster über meine Anwendung wird ein bestimmter Bereich nicht mehr korrekt neu gezeichnet.

Wähle ich dann nur das Fenster an, wird das Fenster wieder korrekt gezeichnet.

Muss ein Bug sein, andere QT Programme zeichnen korrekt neu!!!
Nach Einfügen dieser Zeile wird korrekt gezeichnet.

Code: Alles auswählen

	GraficView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
Gruss R.

P.S.: Habe aktuellen Patchstatus!
Zuletzt geändert von Ritchie am 20. Februar 2011 13:23, insgesamt 1-mal geändert.

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf » 18. Februar 2011 10:39

Das mit dem Desktop&Taskbar Info hört sich komisch an. Grafiktreiber-Bug vielleicht?
Dein Fix ist eher ein Hack. Bei jedem Update ALLES in der Scene neu zeichnen ist ein Perfomance-Bremsklotz.
Ich bin mir ziemnlich sicher, dass du einen boudingRect-Bug hast, das boundingRect() muss wirklich den kompletten Bereich abdecken, auf den gezeichnet werden soll, andernfalls bleiben beim repaint Bereiche leer (z.B. beim Resize oder wenn ein Fenster über die View geschoben wird...)

Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

Beitrag von Ritchie » 19. Februar 2011 20:43

Hi,

dachte ich eigentlich auch.
Ich habe verschiedene Objekt angelegt, unterschiedlicher Klassen Typen, bezogen auf mein Programm. Alle aber Teil eine GraficScene.

Ist jedes Objekt einzeln auf dem Bildschirm, arbeitet alles korrekt, keine Redrawing Fehler zu sehen.

Ebenso habe ich zum Überprüfen des Redraw-Bereich, einfach den Bounding-Bereich in der Zeichenroutine als letztes Kommando angegeben und ein Rechteck mit diesen Parameter zeichnen lassen. Es deckte die Fläche korrekt ab.

Das einzige Problem, könnte eine Vektorlinie sein, welche als Rechteck-Parameter 0 hat, da die Linie gerade ist und ich eine Linienstärke mit z.b 5 angegeben habe.

Edit:
Auch das Vektor-Objekt wird von der Scene korrekt gezeichnet, wenn es alleine auf dem Bildschirm ist (mit den gleichen Objekt Typ).

Gibt es den was zu beachten, wenn man Grafik "QGraphicsObject" und eigene QWidgets (qLabel, .....) in einer Scene verwaltet.


Gruss R.

Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 20:41

Beitrag von Ritchie » 22. Februar 2011 20:51

Nun habe ich nochmals das gesamte Programm geprüft.

GraficView->setViewportUpdateMode scheint hierbei wohl doch mein Problem zu sein.

Code: Alles auswählen

GraficView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
ist wohl der Holzhammer.

Da ich aber überall die Recbounds nach meiner Meinung korrekt habe, habe ich einfach mal den Mode

Code: Alles auswählen

GraficView->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
eingestellt. Und siehe da, auch jetzt ist alles o.k.

Der Default Wert ist

Code: Alles auswählen

GraficView->setViewportUpdateMode(QGraphicsView::MinimalViewportUpdate);
Wo liegt jetzt das Problem ? Doch mein Grafiktreiber ? Doch noch meine Recbounding?
Ich habe kUbuntu 10.10 im Einsatz.

Gruss R.

Antworten