Soy nuevo en QT. Entiendo que puedes forzar una actualización de la pantalla, pero me he quitado todo el pelo tratando de descubrir cómo. Esto es lo que estoy tratando de hacer específicamente.QT Repaint/Redraw/Update/Hacer algo
Presiono un botón (evento de señal Click), que ejecuta un código que cambia una imagen (QLabel) en la pantalla, espera la entrada, y luego continúa cambiando una nueva imagen (QLabel diferente). Lo intenté todo y la pantalla no se actualiza hasta que se completa el código de evento de la señal onclick. En este momento, no estoy esperando la entrada del usuario, estoy usando sleep (~ 500 ms) para realizar pruebas.
Según lo que he leído, QT está orientado a eventos, lo que significa que básicamente estoy creando un conjunto de eventos, que se ponen en una cola y se ejecutan cuando el evento de señal onClick vuelve al (lazo principal)/(controlador de eventos). No quiero esperar hasta que la función esté completa, hará que programar sea extremadamente doloroso si tengo que cumplir esta rutina completamente basada en eventos.
¿Cómo puedo forzar la actualización del mapa de píxeles de QLabel? He intentado todo. A continuación se muestra todo el código que he probado en mi controlador de eventos de señal onClick. (UpButton es el nombre de la QLabel que es un mapa de píxeles)
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);
Como se puede ver, sólo estoy dando palos de ciego en este punto. Intenté ver el código de muestra y hacer todos mis deberes, pero estoy perdido. Apreciar cualquier ayuda, consejo o código de muestra.
En sistemas de GUI basados en eventos, normalmente no "espera la entrada" en sus devoluciones de llamada. El estado de espera de entrada solo significa que estás en el ciclo de eventos. Así que estoy confundido acerca de por qué estarías usando el sueño para nada: ¿qué rutina pensabas llamar cuando * * tratabas con la entrada del usuario? No se preocupe porque los eventos sean dolorosos ... las señales y las ranuras no muerden (generalmente). – HostileFork