Seite 1 von 1

QLabel-Aktualisierung erzwingen - repaint()?

Verfasst: 21. August 2007 12:13
von thw
Hallo zusammen,

ich habe ein QLabel in dem ich eine Miniaturvorschau einer grafischen Operation anzeigen möchte. Das funktioniert so weit ganz gut.
Jetzt habe ich das Problem dass das Erstellen der Vorschau je nach Rechenleistung und Umfang u.U. ein paar Sekunden dauern kann. Deshalb möchte ich in der Zwischenzeit in dem Label den Text "Erstelle Vorschau..." anzeigen lassen, damit der Nutzer weiß, hier geschieht etwas. Habe mir das so gedacht:

Code: Alles auswählen

( QLabel *imgLabel=new QLabel(); )

imgLabel->setText("Lade Vorschau...");
imgLabel->repaint();
//... QImage erstellen, div. Operationen ausführen ... \\
imgLabel->setPixmap(QPixmap::fromImage(smallimage));
Allerdings wird das Label nicht aktualisiert, auch nicht, wenn ich das Parentwidget neu zeichnen lasse. Das Label zeigt immer den vorherigen Zustand an (also entweder anderes Bild oder einen Text) und wird erst aktualisiert, wenn die Vorschau erzeugt ist und angezeigt wird. Die "Erstelle..."-Meldung wird nie angezeigt. Auch wenn ich zu allererst ein QLabel.clear() einfüge, ändert sich am Verhalten nichts.
Ich ha die Doku eigentlich so verstanden, dass repaint() ein unbedingtes sofortiges Neuzeichnen bewirkt. Gibt's da noch eine andere Methode für?

Danke schomal,
thw

Verfasst: 21. August 2007 12:17
von upsala
Läßt du den Event-Handler laufen? Ansonsten QApplication::processEvents()

Verfasst: 21. August 2007 14:14
von thw
Danke, das hilft :-)
Problem ist gelöst.

MfG,
thw