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

Qt Discussion :

Lire ligne par ligne dans un fichier et afficher dans un tableau


Sujet :

Qt

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 34
    Points : 15
    Points
    15
    Par défaut Lire ligne par ligne dans un fichier et afficher dans un tableau
    Bonjour à tous,

    je voudrais lire un fichier.txt ligne par ligne, et afficher chacune de ces lignes( qui sont en fait des mots) dans un tableau.
    Pour être plus clair, voici comment se présente mon .txt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    date1
    type1
    libellé1
    montant1
     
    date2
    type2
    libellé2
    montant2
     
    ...
    Je voudrais ceci:
    date1 -> ligne 1, colonne 0
    type1 -> ligne 1, colonne 1
    libellé1 -> ligne 1, colonne 2
    montant1 -> ligne 1, colonne 3

    date2 -> ligne 2, colonne 0
    type2 -> ligne 2, colonne 1
    libellé2 -> ligne 2, colonne 2
    montant2 -> ligne 2, colonne 3

    et ainsi de suite....

    Voici mon code:

    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
    QString line;
     
     
    QFile fichier("Fichiers//FichierCA.txt");
     
        if (!fichier.open(QIODevice::ReadOnly)) //Si l'ouverture échoue 
    	return; //On arrête
     
    	//Si l'ouverture fonctionne on continue:
    	QTextStream flux(&fichier);
     
            while ( !flux.atEnd() )
            {
                line = flux.readLine(); // Lis la ligne sans le '\n'
     
    	   for (i=0;i<=4;i++)	 
    			{  
    		         // On défini son texte
             	         item.setText(line);
     
             	         // Et enfin on l'associe avec notre model
    			 vue->setModel(tableau);
             	         tableau->appendRow(new QStandardItem("test"));
          			}
     
            }
            fichier.close();
     
     
     
     
    }
    et le souci c'est que:
    lorsque j'ouvre la fenetre, les colonnes contiennent 51 lignes précisément et a chaque ligne, il y a écrit "test" sur la première colonne. ca donne ca en gros pour vous aider a comprendre:

    Date Type Libelle Montant
    test
    test
    test
    test
    test
    ...


    (date, type, libelle et montant) sont des cellules "titres" saisies en dur, elles ne bougent pas.

    De +, lorsque je met &item à la place de "new QStandardItem("test"), il ne met rien, les cellules restent blanches (sauf les titres qui sont en dur), j'en déduit qu'il ne pompe pas les infos du fichier...

    Quelqu'un aurait une idée?
    merci !!

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Je ne comprends pas ton problème. Tu arrives pas à lire le fichier ou a afficher ce que tu veux dans ton tableau.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    En fait quand je veux afficher test il me l'affiche mais sur toute la première colonne, alors qu'il devrait le faire sur la premiere ligne.

    ensuite quand je veux lire le fichier il n'écrit rien dans le tableau...

  4. #4
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Tu n'expliques pas à quoi correspondent "item" et "tableau" dans ton code, item est un QStandardItem je suppose.

    Mais à vue de nez, tu boucles sur les lignes de ton fichier (l12), puis pour chaque lignes tu boucles 4 fois (l16) et à chaque fois tu ajoutes une nouvelle ligne à ton tableau. De plus dans ta boucle for, tu crées des items toujours avec le même contenu, puisque tu ne fais pas de nouveau readline, tu as 4 copies de chaque ligne. Tu auras donc dans ton tableau 4 fois le nombre de lignes de ton fichier.

    Tu devrais plutôt avoir un algo du genre
    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
    while ( !flux.atEnd() )
    {
        for (i=0;i<=4 && !flux.atEnd();i++)	 
        {  
            // ... initialiser ici une nouvelle ligne de tableau
            ligneDeTableauCourante = new ...
            line = flux.readLine();
    	// On défini son texte
            item.setText(line);
            // ... ajouter ici une colonne à ta ligne de tableau courante
            ligneDeTableauCourante.ajouterCol(item)
        }
        tableau->appendRow(ligneDeTableauCourante);
    }
    // Et enfin on l'associe avec notre model
    vue->setModel(tableau);

Discussions similaires

  1. Lire une table ligne par ligne
    Par Deciprog dans le forum Macro
    Réponses: 17
    Dernier message: 15/02/2010, 10h13
  2. lire une table ligne par ligne
    Par Damien69 dans le forum Persistance des données
    Réponses: 0
    Dernier message: 04/06/2009, 15h57
  3. Lire un .txt ligne par ligne
    Par Newenda dans le forum MATLAB
    Réponses: 4
    Dernier message: 01/04/2009, 16h38
  4. [Performances] Lire un flux ligne par ligne
    Par LLB dans le forum Framework .NET
    Réponses: 6
    Dernier message: 03/06/2008, 00h32
  5. Lire une string ligne par ligne
    Par Aurazed dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 08/02/2008, 12h24

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