Dans un application,
j'ouvre une fenêtre avec une barre de progression,
pour attendre que quelque chose se termine.
Voici le code :
Code :
- WaitProgress::WaitProgress(QWidget *parent, const char *name) : WaitProgressDlg(parent,name,TRUE) {
- QThread::start();
- }
- WaitProgress::~WaitProgress(){
- }
- void WaitProgress::run() {
- for(;;) {
- mycond.wait();
- ProgressBar->setProgress(0);
- this->show();
- int progress=0;
- for(int i=0; i<WaitSec;i++) {
- myWait(1,0);
- ProgressBar->setProgress((progress+=1));
- }
- this->hide();
- }
- }
- void WaitProgress::Affiche(char *texte,int Sec) {
- WaitSec=Sec;
- ProgressBar->setTotalSteps(Sec);
- TextLabel->setText(texte);
- mycond.wakeOne();
- }
|
Cette classe fonctionne,
mais parfois la fenêtre ne se ferme pas,
elle reste en permanence à l'écran.
Ca ne fait pas planter le programme,
mais c'est gênant tout de même.
Ce que je ne comprend pas,
c'est que j'appelle systématiquement la méthode hide,
sans aucune condition.
Et dans le processus qui appelle cet objet,
je ne le tue pas.
Donc la fenêtre devrait se fermetr à chque fois,
sans exception.
Quelqu'un a une idée ?
Message édité par warp le 12-12-2003 à 09:19:16
---------------
Il n'est pas nécéssaire de réussir pour persévérer.