Il mio primo ingenuo ad aggiornare la mia barra di avanzamento è stato quello di includere le seguenti righe nel mio ciclo che sta facendo l'elaborazione, fare qualcosa di simile a questo:QProgressBar non mostra progressi?
while(data.hasMoreItems())
{
doSomeProcessing(data.nextItem())
//Added these lines but they don't do anything
ui->progressBar->setValue(numberProcessed++);
ui->progressBar->repaint();
}
ho pensato di aggiungere il repaint()
renderebbe la pausa di esecuzione, mentre l'aggiornamento continuo la GUI, ma a quanto pare non è così semplice. Dopo aver guardato le domande:
QProgressBar Error
Progress bar is not showing progress
sembra che ho intenzione di mettere il trattamento dei dati in un thread diverso e poi collegare un segnale dal thread di elaborazione dei dati al thread GUI per aggiornare la barra di avanzamento. Sono piuttosto inesperto con GUI e thread e mi chiedevo se qualcuno potesse semplicemente indicarmi la direzione giusta, cioè quali classi di Qt dovrei considerare per questo. Direi che ho bisogno di un oggetto QThread, ma ho esaminato la documentazione di QProgressBar ma non viene visualizzato l'argomento del threading.