Bonjour à tous,

Je suis débutant en Qt, et je développe (je fais de mon mieux) une application qui nécessite à un moment donnée plusieurs appelle de fonction qui peuvent durer un peu de temps.
je voudrais pouvoir afficher dans une QProgressBar la progression de mon "workflow" ainsi que certaines informations sur son bon déroulement.

Je voudrait donc exécuter ces fonctions dans un thread, afin que mon application ne soit pas gelée.
j'ai cru comprendre en cherchant sur le net que c'était possible avec le framework QtConcurrent. j'ai donc fait quelque chose de tous simple pour l'instant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
bool
ctrlAcrControl::update()
{
    qDebug() << "prepare process in thread" << QThread::currentThreadId();
 
    QFutureWatcher<void> futureWatcher;
 
    // Start the computation.
    futureWatcher.setFuture(QtConcurrent::run(this, &ctrlAcrControl::runProcess));
    futureWatcher.waitForFinished();
}
et plus loin

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
void
ctrlAcrControl::runProcess()
{
    qDebug() << "do process in thread" << QThread::currentThreadId();
    // ... mon code ..
}
le debug me dit bien que les deux fonctions sont dans des thread différents. mais mon application est toujours gelée.

j'ai manqué quelque chose, c'est pas du tous ça qu'il fallait faire ?

Si quelqu'un peut m'éclaire c'est pas de refus, j’avoue que je suis un peu perdu .