Sono nuovo a QT. Capisco che puoi forzare un aggiornamento del display, ma ho tirato fuori tutti i miei capelli cercando di capire come. Ecco cosa sto cercando in particolare di fare.QT Ridisegna/ridisegna/aggiorna/fa qualcosa
Premere un pulsante (evento segnale onClick), che esegue il codice che modifica un'immagine (QLabel) sul display, attende l'input, quindi procede modificando una nuova immagine (QLabel diversa). Ho provato tutto e il display non si aggiorna fino a quando il codice evento del segnale onclick è completo. Al momento, non sto aspettando l'input dell'utente, sto usando usleep (~ 500 ms) a scopo di test.
Da quello che ho letto, QT è event driven, ovvero sto praticamente creando una serie di eventi, che vengono messi in una coda, ed eseguiti quando l'evento (onclick signal) ritorna al (loop principale)/(gestore di eventi). Non voglio aspettare fino al completamento della funzione, renderà la programmazione estremamente dolorosa se devo eseguire questa routine interamente basata sugli eventi.
Come è possibile forzare l'aggiornamento della pixmap QLabel. Ho provato di tutto. Di seguito è riportato tutto il codice che ho provato nel mio gestore di eventi di segnale onClick. (UpButton è il nome del QLabel che è un pixmap)
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);
Come potete vedere, sto solo le riprese al buio, a questo punto. Ho provato a guardare il codice di esempio e fare tutti i miei compiti, ma sono perso. Apprezzare qualsiasi aiuto, consiglio e/o codice di esempio.
Nei sistemi GUI basati su eventi, in genere non si "aspetta l'input" nei callback. Lo stato di attesa dell'input significa solo che sei nel ciclo degli eventi. Quindi sono confuso perché staresti usando il sonno per qualsiasi cosa - che routine stavi pensando di chiamare quando * avevi * intenzione di trattare con l'input dell'utente? Non preoccuparti che gli eventi siano dolorosi ... i segnali e le slot non mordono (di solito). – HostileFork