QT Repaint / Redraw / Update / etwas tun

Ich bin neu bei QT. Ich verstehe, dass Sie eine Anzeigeaktualisierung erzwingen können, aber ich habe mir alle Haare ausgerissen, um herauszufinden, wie. Hier ist, was ich speziell versuche zu tun.

Ich drücke eine Taste (onClick-Signalereignis), die Code ausführt, der ein Bild (QLabel) auf dem Display ändert, auf die Eingabe wartet und dann ein neues Bild (anderes QLabel) ändert. Ich habe alles versucht und die Anzeige wird erst aktualisiert, wenn der Ereigniscode für das Klicken auf ein Signal vollständig ist. Im Moment warte ich nicht auf Benutzereingaben, sondern benutze usleep (~ 500 ms) zu Testzwecken.

Nach dem, was ich gelesen habe, ist QT ereignisgesteuert, was bedeutet, dass ich im Grunde eine Reihe von Ereignissen erstelle, die in eine Warteschlange gestellt und ausgeführt werden, wenn das (onClick-Signalereignis) zur (Hauptschleife) / (Ereignisbehandlungsroutine) zurückkehrt. Ich möchte nicht warten, bis die Funktion abgeschlossen ist. Die Programmierung wird extrem schmerzhaft, wenn ich diese Routine ausschließlich auf der Grundlage von Ereignissen ausführen muss.

Wie kann ich die Aktualisierung der QLabel-Pixmap erzwingen? Ich habe alles versucht. Nachfolgend finden Sie den gesamten Code, den ich in meinem Ereignishandler für das onClick-Signal ausprobiert habe. (upButton ist der Name des QLabels, das eine Pixmap ist)

update();
repaint();
ui->upButton->setUpdatesEnabled(TRUE);
update();
repaint();
QPaintEvent paintevent(ui->upButton->childrenRegion());
QPaintEvent * test = &paintevent;
paintEvent(test);
this->changeEvent(test);
ui->upButton->update();
ui->upButton->repaint();
ui->upButton->repaint(ui->upButton->childrenRegion());
repaint();
QApplication::sendPostedEvents();
this->parentWidget()->update();
usleep(100000);

Wie Sie sehen, schieße ich gerade im Dunkeln. Ich habe versucht, mir den Beispielcode anzusehen und alle meine Hausaufgaben zu machen, aber ich bin verloren. Schätzen Sie Hilfe, Ratschläge und Beispielcodes.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage