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 :

QMessageBox tourne en boucle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut QMessageBox tourne en boucle
    Bonjour à tous,

    Je débute sur QT ,j'ai une IHM à réaliser au boulot qui fonctionne et je dois ajouter une message box dans un bout de code qui fonctionne.
    Lors de la compil aucune erreur cependant lorsque j'arrive à cette fonction ma message box apparait correctement mais à l'infini jusqu'à faire planter le soft.
    Je vous poste le bout de code en question:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    void MainWindow::on_Table_test_write_clicked()
    {
     
     
     
        if(flag_read_EEPROM == 0)
        {
                 if(this->flag_Qevent==1)
                    {
                     QString path;
                         QDir Nouveau_dossier_cree;
                         path.append(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation)); // on rajoute au path le chemin de "mes documents" sur windows
                         path.append("/SFT393"); // nom du dossier à creer
                         //path.append("/Antenne1"); // nom du sous dossier à creer
                         if(Nouveau_dossier_cree.mkdir(path))  // création d'un nouveau dossier dans path
                             QMessageBox::information(this,"Info","Un nouveau répertoire a été crée dans Mes documents"); // si le dossier n'existe pas deja on previent l'utilisateur
                             QMessageBox::information(this,"Test","Ca plante là"); 
     
                         path.append("/Table0.csv"); // nom du fichier
     
     
                        QString chaine = ui->lineEdit_debug_table->text();
                        // Création d'un objet QFile
                        QFile file(path);   
                        // On ouvre notre fichier en lecture seule et on vérifie l'ouverture
                        if (!file.open(QIODevice::Append | QIODevice::Text))
                        return;
                        // Création d'un objet QTextStream à partir de notre objet QFile
                        QTextStream flux(&file);
                        // On choisit le codec correspondant au jeu de caractère que l'on souhaite ; ici, UTF-8
                        flux.setCodec("Local8Bit");
                        // Écriture des différentes lignes dans le fichier
                        flux << chaine << endl; // Création d'un objet QTextStream à partir de notre objet QFile
                        this->flag_Qevent=0;
     
                    }
    La première MessageBox fonctionne très bien dès lors ou le répertoire demandé n'existe pas mais la seconde s'affiche en boucle, j'ai l'impression qu'elle s'auto-implémente dans le flux de la suite du code.


    Je précise que je n'ai aucune formation en développement sur C ni QT je suis autodidacte (vive internet) donc pardonnez moi si les mots que j'utilise ne sont pas les termes exact.

    En vous remerciant pour votre aide

    Alex

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Première remarque sur le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(Nouveau_dossier_cree.mkdir(path))  // création d'un nouveau dossier dans path
                             QMessageBox::information(this,"Info","Un nouveau répertoire a été crée dans Mes documents"); // si le dossier n'existe pas deja on previent l'utilisateur
                             QMessageBox::information(this,"Test","Ca plante là");
    Le if n'est valide que sur la première QMessageBox.
    En effet, si vous vouliez mettre les deux lignes dans le if, il faut utiliser des accolades.
    D'ailleurs, je vous conseille, pour tous vos if, même ceux sur une ligne de mettre toujours des accolades, cela évite mille erreurs.

    Je vous conseille aussi de faire attention à l'indentation du code.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    Bonjour,

    Merci pour votre réponse je tacherai de m'en souvenir pour les accolades c'est plus propre en effet.
    J'ai résolu mon problème qui était lié à une boucle que j'avais oublié, cependant j'ai un autre soucis.
    -J'ai récupéré sur le net un bout de code qui me permet de choisir le répertoire où sauvegarder un fichier .csv que je crée, jusque là tout fonctionne
    -Ensuite je crée un flux de données SNMP que je veux mettre dans le dit fichier
    -Mon fichier .csv existe bien mais il est vide, j'ai l'impression que dans mon code je n'ouvre pas le fichier .csv que je veux remplir

    Ci-dessous le code récupéré qui fonctionne et le dernier "else" me permet de rentre dans une boucle pour récupérer le flux

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    void MainWindow::on_Get_Table_button0_clicked()// Lecture de la table0
     
    {
                    QMessageBox msbox;
                    QString dir=QFileDialog::getExistingDirectory(this, tr("Veuillez choisir ou créer votre dossier de travail!"), "", QFileDialog::ShowDirsOnly|      QFileDialog::DontResolveSymlinks);
            if (dir.isEmpty())
                    {
                            msbox.setText("Vous avez annulé la création de votre repertoire de travail");
                            msbox.exec();
                    }
                    else
                    {
                            QString fileName= QFileDialog::getSaveFileName(this, tr("Enregistrer votre fichier dans votre repertoire de travail!"), dir, tr("*.csv"));
                            if (fileName.isEmpty())
                            {
                                msbox.setText("Vous n'avez pas créé de fichier dans votre repertoire de travail");
                                msbox.exec();
                            }
                            else
                            {
                              QFile file(fileName);
                              file.open(QIODevice::WriteOnly); //Ouverture du fichier
     
     
                              button_off();
                              ui->label_info->setVisible(true);
                              ui->label_info->setText("<font color='blue'> Lecture Table0 en cours</font>");
                              this->f = 200;
                              metafonction();
     
                            }
                    }
     
     
    }
    Et ici le flux que je souhaite récupérer, je ne sais pas trop comment faire pour que ce flux soit mis dans le fichier créer plus haut
    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
    void MainWindow::on_Table_test_write_clicked()
    {
     
     
     
        if(flag_read_EEPROM == 0)
        {
     
        if(this->flag_Qevent==1)
               {
     
     
          flux << chaine << endl; // Création d'un objet QTextStream à partir de notre objet QFile
     
               }
         }
    Merci d'avance

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    J'ai l'impression que vous n'écrivez rien du tout dans le ficheir (pas de code d'écrit pour ce faire). Je vous conseille de lire des tutoriels sur le langage : http://cpp.developpez.com/cours/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Pourquoi mon processus tourne en boucle ?
    Par cladsam dans le forum POSIX
    Réponses: 6
    Dernier message: 09/06/2011, 16h07
  2. Probleme urgent Flash mon swf tourne en boucle
    Par nidifax dans le forum Flash
    Réponses: 1
    Dernier message: 27/06/2007, 07h44
  3. [FLASH 8] Un SWF tourne en boucle : je ne veux pas !
    Par Olish dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 24/04/2006, 11h36
  4. Réponses: 1
    Dernier message: 19/12/2005, 13h00
  5. Pb de rand() qui tourne en boucle
    Par MadChris dans le forum MFC
    Réponses: 3
    Dernier message: 26/06/2004, 16h24

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