Bonjour à tous. Mon problème est un peu bizarre.

J'ai une fenêtre principale (appelons-là "work") qui contient un bouton X permettant d'appeler une seconde fenêtre "bdd" via un show().
Cette seconde fenêtre "bdd" a pour but d'offrir à l'utilisateur un choix d'infos de la bdd. L'utilisateur choisit sa data et appuie sur "ok". A ce moment là, la fenêtre "bdd" appelle la fonction "work.load()" en lui passant les infos qui vont bien. Puis appelle la méthode "self.close()" pour se fermer.

Dans la fenêtre de travail, la fonction "work.load()" charge depuis la bdd toutes les infos correspondantes au choix de l'utilisateur, fait certains traitements dessus et affiche le résultat dans différents widgets Qt.

Le problème, c'est que tant que cette fonction "load()" (avec tous ses traitements) n'est pas terminée, la fenêtre "bdd" est toujours dans son appel à ce fameux load() et n'exécute donc pas le close(). Et si le traitement devient vraiment trop long, ben en fait elle n'exécute plus du tout ce close() et reste donc ouverte et gelée (et ne répond même pas au clic sur croix rouge). Et ce problème ne se présente que sur Windows XP et pas sous Linux.

J'ai cependant trouvé 2 façons de détourner le problème
1) je place l'appel à close avant l'appel à load. Il semblerait que malgré ce close(), la fenêtre "bdd" étant toujours en activité dans le programme peut encore exécuter des actions et donc peut appeler ce "work.load()"

2) je relie la fenêtre "bdd" à un slot("close()") sur un signal "toto" quelconque et je fais envoyer ce signal "toto" en fin de fonction "work.load()".

Je ne sais pas trop quelle solution serait la mieux appropriée (et la plus propre). D'ailleurs je ne sais même pas si c'est propre de faire directement appeler la fonction "work.load()" depuis la fenêtre "bdd". Je me demande s'il ne vaudrait pas mieux faire envoyer un signal par la fenêtre "bdd", signal récupéré par la fenêtre "work" et relié à la fonction "work.load()"...

Merci