Tu peux forcer le traitement des événements sur un long calcul avec la méthode processEvents de QCoreApplication.
Ce qui te donnerait un truc du genre :
qApp->processEvents(QEventLoop::AllEvents);
Mais c'est pas super propre... sur l'application sur laquelle je bosse on a déjà eu de très mauvaises surprises avec ce genre de méthode (bon je parle d'un soft qui a des milliers de classes). L'idéal serait d'implémenter ton calcul dans une classe dérivée de QThread. C'est très simple en fait, tu redéfinis la méthode run() avec ce que tu veux calculer et tu lances le thread par la méthode start().
Pour la communication avec ton interface graphique tu utilises les slots de QThread genre finished(). Tu peux aussi créer un signal dans ta classe que tu connecteras au slot setValue(int) de QProgressBar pour mettre à jour la progression.