Mon thread s’exécute séquentiellement et pas en parallèle
Bonjour à tous,
j'essai de réaliser ce qui suit : lorsque je clique sur un bouton, celui-ci devient gris (setEnabled(false)), puis un traitement sera effectué, et enfin le bouton redevient accessible (setEnabled(true)) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| void MainWindow::onSketchingBtnClick() {
// Classe qui dérive de QThread
class OnSketchingBtnClick : public QThread {
public:
void run() {
// Traitement
processing();
// Rendre le bouton accessible de nouveau
button->setEnabled(true);
exec();
}
};
// Rendre le bouton inaccessible
button->setEnabled(false);
// Lancer le traitement dans un thread
OnSketchingBtnClick *thread = new OnSketchingBtnClick(this);
thread->start();
cout << "done.." << endl;
} |
Le problème c'est que je note pas l’exécution de la méthode setEnabled(true). C'est comme si l’exécution était séquentielle : le message de cout n'est affiché qu’après la fin du traitement tout comme le code suivant :
Code:
1 2 3 4 5 6 7
| // Rendre le bouton inaccessible
button->setEnabled(false);
// Traitement
processing();
cout << "done.." << endl;
// Rendre le bouton accessible de nouveau
button->setEnabled(true); |
Quelqu'un a-t-il une explication ? Merci d'avance,
Chatbour.