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 :
et plus loin
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(); }
le debug me dit bien que les deux fonctions sont dans des thread différents. mais mon application est toujours gelée.
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 .. }
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 .
Partager