IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Pourquoi mon QInputDialog reste affiché ?

  1. #1
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut Pourquoi mon QInputDialog reste affiché ?
    Bonjour,

    J'ai un soucis d'affichage avec la QInputDialog.

    En effet une fois le choix fait dans une liste déroulante et après avoir cliqué sur Ok, la QInputDialog reste affichée jusqu'à la fin de la boucle qui arrive juste derrière. Je ne comprends pas pourquoi... Quelqu'un a-t-il une solution pour que la QInputDialog se ferme avant de lancer la boucle ?

    Merci

    ci après un bout du code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    choix=QInputDialog::getItem(this, "Affectation des variables", "Colonne TypeAppel : ", ListeDeroulante,9);
     
    for (x=0; x<2000; x++)
            {
                //algorythme de la boucle
            }
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Et si tu utilises Qt::Dialog en tant que dernier argument (Qt::WindowFlags flags) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    bool ok;
    choix = QInputDialog::getItem(this, "Affectation des variables", "Colonne TypeAppel : ", ListeDeroulante, 9, true, &ok, Qt::Dialog);
     
    if (ok)
    {
       // boucle
    }

  3. #3
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Ca ne change rien :s
    le dialog ne s'efface que quand la boucle se termine, je ne comprends pas pourquoi.
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Est ce que tu peux nous donner un peu plus de code stp ?

  5. #5
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    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
     
    if (condition=="bon")
    {
            bool ok;
            choix=QInputDialog::getItem(this, "Affectation des variables", "Colonne TypeAppel : ", ListeDeroulante,9, true, &ok, Qt::Dialog);
            NumColTypeAppel=TableauTemporaire.at(0).indexOf(choix); //Mémorise du N° de colonne désigné
            TableauCourant.clear();// vide le TableauCourantRelais
            if (ok)
            {
                  for (x=0; x<TableauTemporaire.size(); x++) //parcour le TableauTemporaire.at(ligne).at(colonne)
                  {            
                        if (NumColCellule>=0){LigneDR.cellule=TableauTemporaire.at(x).at(NumColCellule);}
                        if (NumColDate>=0){LigneDR.date=TableauTemporaire.at(x).at(NumColDate);}
                        TableauCourant.append(LigneDR); //ajoute ligne dans le TableauCourantRelais
                  }
            }
    }
    Voila mais je peux pas en donner plus désolé

    en gros je fais un if et si les conditions de ce if sont correctes, j affiche la QInputDialog et ensuite une fois un choix fait dans la QInputDialog je lance une boucle for... Après je ferme le if.
    Le probleme c est que j aimerai que la QInputDialog se ferme avant de lancer la boucle for... en appuyant OK.
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Je me suis fait un petit code de test et j'ai aucun problème, la fenêtre se ferme bien juste après le choix et avant la boucle. La disparition de la fenêtre se fait évidemment pendant la boucle car elle prends un peu de temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        bool ok;
        QStringList liste;
        liste << "toto" << "tata";
        QString choix=QInputDialog::getItem(this, "Affectation des variables", "Colonne TypeAppel : ", liste,0, true, &ok, Qt::Dialog);
        qDebug() << choix;
     
        if (ok)
        {
              for (int x=0; x< 5000; x++)
              {
                qDebug() << x;
              }
        }

  7. #7
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Mais ne serait il pas possible de vérifier que le dialog soit fermé avant de lancer la boucle?
    Ainsi, je pourrais afficher un QProgressDialog pour la progression de la boucle...
    Merci
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  8. #8
    Invité
    Invité(e)
    Par défaut
    L'objet choix de type QString ne sera pas déclarer tant que la la boite de dialogue ne sera pas valider (donc fermé).

    Même chose pour le booléen ok. Si il ne vaut pas true, la boucle ne sera jamais exécuté.

    Il faut donc dans les deux cas valider le QInputDialog c'est-à-dire cliquer sur le bouton Ok.

  9. #9
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    C est ce que je pensais,
    Donc, c est peut être simplement du au fait du manque de réactivité de ma carte graphique?
    Je vais essayer sur un autre ordi je verrai bien si ca change.
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  10. #10
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Citation Envoyé par katanaenmousse Voir le message
    C est ce que je pensais,
    Donc, c est peut être simplement du au fait du manque de réactivité de ma carte graphique?
    Je vais essayer sur un autre ordi je verrai bien si ca change.
    Oui c'est très probablement ça car aucune raison sinon. Tu as essayer en utilisant le pas à pas du mode debug ?

  11. #11
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Oui effectivement, c'était un problème matériel, avec mon autre config ça fonctionne.
    Merci à tous
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pourquoi mon footer s'affiche avant la fin de la page ?
    Par geeka dans le forum Balisage (X)HTML et validation W3C
    Réponses: 22
    Dernier message: 06/07/2015, 16h39
  2. Pourquoi mon div reste en bas
    Par koKoTis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/09/2008, 13h34
  3. Réponses: 9
    Dernier message: 20/11/2007, 11h55
  4. Réponses: 2
    Dernier message: 17/11/2006, 11h35
  5. pourquoi mon quickreport n'affiche rien ?
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 8
    Dernier message: 31/07/2005, 00h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo