QLabel-Aktualisierung erzwingen - repaint()?

Alles rund um die Programmierung mit Qt
Antworten
thw
Beiträge: 5
Registriert: 17. Oktober 2006 14:24
Kontaktdaten:

QLabel-Aktualisierung erzwingen - repaint()?

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Läßt du den Event-Handler laufen? Ansonsten QApplication::processEvents()
thw
Beiträge: 5
Registriert: 17. Oktober 2006 14:24
Kontaktdaten:

Beitrag von thw »

Danke, das hilft :-)
Problem ist gelöst.

MfG,
thw
Antworten