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)) :
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
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; }
Quelqu'un a-t-il une explication ? Merci d'avance,
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);
Chatbour.
Partager