Seite 1 von 1

Änderung an Datei / repaint oder update o.ä. ? / Threads ?

Verfasst: 6. Februar 2007 16:50
von deadlogg
Hallo,

ich hab folgendes Problem.
Ich lasse mir in meiner Qt-Applikation ein PNG (Bsp. input.png) Bild anzeigen.
Genauer in einem QGraphicView incl. QGraphicScene incl. QPixmap.
Dann wird das Bild weiterverarbeit, wenn ich den "Process Btn" drücke; es werden dann einige Filter/Veränderungen auf das Bild angewandt und wird unter dem gleichen Namen wieder im Dateisystem abgelegt. Diese Filter brauchen eine gewisse Zeit, vielleicht eine halbe Sekunde.
Wenn das Bild bearbeitet ist würde ich die Anzeige gerne aktualisieren. Allerdings zeigt er mir dann immernoch die alte Version des Bildes an.
Auch wenn ich ein scene->update() mache (zB durch einen Button klick).
Erst nach mehrmaligem aktualisieren läd er mir die neue QPixmap mit dem Bild. Weiß jemand spontan woran das liegen könnte?
Am Anfang hatte ich mir die Bilder in einem QLabel anzeigen lassen, da hat das alles noch funktioniert. Aber ich muss auch in dem Bild zeichnen können.
Es scheint mir kein Timing Problem zu sein, weil das neue Bild schon lange auf die Platte geschrieben ist und trotzdem noch nicht aktualisiert wird. Gibts da einen Buffer in Qt den man erst leeren muss ?
Bin irgendwie ziemlich ratlos grad :shock:

Grüße Ben

Verfasst: 10. April 2007 11:49
von hilby
moin,

genau wiess ich nicht, was falsch läuft - aber als Anregung:

also falls Du es als Backgound anzeigst (auf dem graphicView)
musst Du das caching abstellen...

view.setBackgroundBrush(":/images/backgroundtile.png");
view.setCacheMode(QGraphicsView::CacheBackground);

da gibt es auch noch ein resetCachedContent () - vielleicht hilft das weiter

ansonsten kann es auch sein, dass du mit addItem(bild)
immer nur ein Item draufpackst, was nicht zwangsläufig ganz oben liegt und damit sichtbar ist - da musst Du mit setZValue(int); das aktuelle Bild obendrauf legen oder die alten von der Szene removen....

mfg
der hilby