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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.