Bonsoir,
J'ai Qt 4.7 et cela fait environ une semaine que je bataille sur un problème et j'ai réussi à le contourner sans pour autant tout comprendre.
Laissez-moi vous exposer déjà le décor : donc mon programme dispose d'une dateedit nommée dateEdit et d'un dialog nommé dlgs : le principe est basé sur la sauvegarde.
J'ai cette fonction "signal et slot" quand la date change (j'ai simplifié le code au maximum) :Au final quand je passe manuellement de Décembre à Novembre 2013 les mois défilent ensuite automatiquement jusqu'à Janvier 2013 (même que ça marque "QDialog::exec() recursive call" : normal puisque qu'il change de date tout seul). De plus les données sont effacées avant même que j'entre et que je valide le nom de sauvegarde (pendant que la dateedit s'affole).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void MainWindow::on_dateEdit_dateChanged(QString newdate) { (...) if (/*le nom de sauvegarde n'est pas une chaîne de caractères vide*/) // alors on sauvegarde le travail avec ce nom avant d'effacer les données else // sinon si c'est une chaine vide dlgs.exec(); // on ouvre le dialogue de sauvegarde pour sauvegarder les données de l'ancienne date avant d'effacer ces dernières // après, une fois le travail sauvegardé (ou non), on efface les données (...) }
Alors que moi je lui demande juste de rester à Novembre et pas de changer 50 fois de date tout seul.
J'ai mis environ 1 semaine à comprendre que c'était soit le dlgs soit la fonction exec() qui "foutaient la merde".
J'ai réussi à contourner le problème en désactivant la dateedit juste avant de faire exec() puis en la réactivant après (en bref j'utilise la fonction setEnabled() sur ma dateedit).
J'avais pensé à "retarder la chose" en mettant un petit timer pour contourner la chose.
Mais peut-être que c'est tout simplement un problème de "modal/non-modal" au niveau du dlgs (plus j'y pense plus j'en suis convaincu).
Sinon je ne vois pas... Qu'en pensez-vous ?
Faut-il que je prenne des médocs costauds ? Que je me m'achève à l'absinthe ?
Partager