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 :

Sélection et lecture du contenu d'un fichier texte

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 110
    Points : 27
    Points
    27
    Par défaut Sélection et lecture du contenu d'un fichier texte
    Bonsoir,

    Je viens d´installer Qt creator et j´ai essaye d´ecrire des codes qui me permettraient de selectioner un fichier texte dans un dossier et en suite de l´ouvrir en mode lecture. J´ai divises mes codes en trois fichiers: mafenetre.h; mafenetre.cpp et main.cpp.

    J´aimerais lire a partir de la fenetre le contenu d´un fichier texte choisit au hasard dans un dossier . Helas j´obtiens apres deboggage comme reponse du programme l´information suivante:
    Tout va bien,la lecture de C:/Users/jiodatsinga/Desktop/QT_SDK/coordonnes.txt a ete une reussite
    L´ouverture du fichier en mode lecture marche, mais le contenu du fichier texte ne s´affiche pas dans la fenetre.

    Pourriez-vous s´il vous plaît me filer un coup de main.

    Merci d´avance.

    mafenetre.h
    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
     
    #ifndef MAFENETRE_H
    #define MAFENETRE_H
     
    #include <QtGui>
     
    class mafenetre : public QWidget // On herite de QWidget
    {
    Q_OBJECT
     
    public:
        mafenetre();
    public slots:
        void ouvrirDialogue();
     
    private:
        QPushButton *boutonDialogue;
    };
    #endif // MAFENETRE_H
    mafenetre.cpp:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #include "mafenetre.h"
     
    mafenetre::mafenetre() : QWidget()
    {
     
        setFixedSize(230, 120);
        boutonDialogue = new QPushButton("Rechercher et ouvrir un fichier", this);
        boutonDialogue->move(40,50);
     
        QObject::connect(boutonDialogue, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
    }
     
    void mafenetre::ouvrirDialogue()
    {
     
        QString message;
        QString myOpenFile = QFileDialog::getOpenFileName(this, tr("Choisir et Ouvrir un fichier"), tr("C:\\"), tr("All Files (*.*)"));
        QFile file(myOpenFile);
     
        if(myOpenFile.isEmpty())
        {
          QMessageBox::warning(this, "ERREUR", "Le fichier n´a pas ete selectionne !");
          return;
        }
        else
        {
          if(!file.exists())
          {
              message = "Le fichier " + myOpenFile + " n´existe pas";
              QMessageBox::critical(this, "Info", "le fichier" + myOpenFile + "n´existe pas");
          }
          else
          {
             bool resultat = file.open(QIODevice::ReadOnly | QIODevice::Text) ;
             if(!resultat)
             {
               message = "Echec de l´ouverture en mode lecture du fichier" + myOpenFile;
               QMessageBox::critical(this, "ERREUR", message);
             }
             else
             {
     
               QTextStream flux(&file);
               QString line;
               while(! flux.atEnd())
               {
                // Lecture Ligne par Ligne
                 line = flux.readLine() ;
                 //traitement de la ligne
                 file.close();
               }
               message = "Tout va bien, la lecture de" + myOpenFile + "a ete une reussite";
               QMessageBox::information(this, "SUCCES", message);
             }
           }
        }
     
    }
    main.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <QApplication>
    #include "mafenetre.h"
     
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        mafenetre fenetre;
        fenetre.show();
     
        return app.exec();
    }

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 110
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    comme je le disais plus haut, je desirais selectioner et en suite afficher le contenu d´un fichier texte. En fait j´avais carrement omis d´utiliser "QMessageBox" pour afficher le contenu du "QString line". Je l´ai fait et en suite j´ai ete en mesure d´afficher le contenu du fichier texte.

    Cependant j´ai essaye avec "QLabel" d´afficher le contenu du fichier texte selectionne. le test a certe marche, mais pas comme je l´aimerais. En fait le contenu du fichier texte apparait dans la fenetre de mon Projet Readfile, pourtant j´aimerais qu´elle apparaisse dans une autre fenêtre. Quel astuce pourrais-je utiliser ?

    Merci d´avance.

    code mafenetre.cpp avec "QMessageBox": Sa marche
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    #include "mafenetre.h"
     
    mafenetre::mafenetre() : QWidget()
    {
     
       // setFixedSize(230, 120);
        boutonDialogue = new QPushButton("Rechercher et ouvrir un fichier", this);
        boutonDialogue->move(40,50);
        boutonDialogue->setGeometry(60,50,160,40);
     
        autrebouton = new QPushButton("Quitter", this);
        autrebouton->move(100,10);
     
        QObject::connect(boutonDialogue, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
        QObject::connect(autrebouton, SIGNAL(clicked()), qApp, SLOT(quit()));
    }
     
    void mafenetre::ouvrirDialogue()
    {
        QString message;
        QString myOpenFile = QFileDialog::getOpenFileName(this, tr("Choisir et Ouvrir un fichier"), tr("C:\\"), tr("All Files (*.*)"));
        QFile file(myOpenFile);
     
        if(myOpenFile.isEmpty())
        {
          QMessageBox::warning(this, "ERREUR", "Le fichier n´a pas ete selectionne !");
          return;
        }
        else
        {
          if(!file.exists())
          {
              message = "Le fichier " + myOpenFile + " n´existe pas";
              QMessageBox::critical(this, "Info", "le fichier" + myOpenFile + "n´existe pas");
          }
          else
          {
             bool resultat = file.open(QIODevice::ReadOnly | QIODevice::Text) ;
             if(!resultat)
             {
               message = "Echec de l´ouverture en mode lecture du fichier" + myOpenFile;
               QMessageBox::critical(this, "ERREUR", message);
             }
             else
             {
     
               QTextStream flux(&file);
               QString line;
               while(! flux.atEnd())
               {
                // Lecture integral
                 line = flux.readAll() ;
     
                 //traitement de la ligne
                 QMessageBox::information(this, "SUCCES", line);
                 file.close();
               }
               message = "Tout va bien, la lecture de" + myOpenFile + "a ete une reussite";
               QMessageBox::information(this, "SUCCES", message);
             }
           }
        }
     
    }
    Code mafenetre.cpp avec "QLabel": J´ai des soucis avec celui-ci
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
     
    #include "mafenetre.h"
     
    mafenetre::mafenetre() : QWidget()
    {
     
       // setFixedSize(230, 120);
        boutonDialogue = new QPushButton("Rechercher et ouvrir un fichier", this);
        boutonDialogue->move(40,50);
        boutonDialogue->setGeometry(60,50,160,40);
     
        autrebouton = new QPushButton("Quitter", this);
        autrebouton->move(100,10);
     
        QObject::connect(boutonDialogue, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
        QObject::connect(autrebouton, SIGNAL(clicked()), qApp, SLOT(quit()));
    }
     
    void mafenetre::ouvrirDialogue()
    {
        QString message;
        QString myOpenFile = QFileDialog::getOpenFileName(this, tr("Choisir et Ouvrir un fichier"), tr("C:\\"), tr("All Files (*.*)"));
        QFile file(myOpenFile);
     
        if(myOpenFile.isEmpty())
        {
          QMessageBox::warning(this, "ERREUR", "Le fichier n´a pas ete selectionne !");
          return;
        }
        else
        {
          if(!file.exists())
          {
              message = "Le fichier " + myOpenFile + " n´existe pas";
              QMessageBox::critical(this, "Info", "le fichier" + myOpenFile + "n´existe pas");
          }
          else
          {
             bool resultat = file.open(QIODevice::ReadOnly | QIODevice::Text) ;
             if(!resultat)
             {
               message = "Echec de l´ouverture en mode lecture du fichier" + myOpenFile;
               QMessageBox::critical(this, "ERREUR", message);
             }
             else
             {
     
               QTextStream flux(&file);
               QString line;
               while(! flux.atEnd())
               {
                // Lecture integral
                 line = flux.readAll() ;
     
                 QLabel *label = new QLabel(this);
                 label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
                 label->setText(line);
                 label->setAlignment(Qt::AlignBottom | Qt::AlignRight);
                 label->show();
                 //traitement de la ligne
                // QMessageBox::information(this, "SUCCES", line);
                 file.close();
               }
               message = "Tout va bien, la lecture de" + myOpenFile + "a ete une reussite";
               QMessageBox::information(this, "SUCCES", message);
             }
           }
        }
     
    }

  3. #3
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
               QTextStream flux(&file);
               QString line;
               while(! flux.atEnd())
               {
                // Lecture integral
                 line = flux.readAll() ;
     
                 //traitement de la ligne
                 QMessageBox::information(this, "SUCCES", line);
                 file.close();
               }
    Cette partie n'est pas nécessaire vu que vous ne récupérez pas les éléments ligne par ligne (avec flux.readLine()) et fermez le fichier _dans_ la boucle, ce qui est assez bizarre comme approche de lecture. De ce fait, je vous propose de remplacer tout cela par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QString text = file.readAll();
    QMessageBox::information(this, "SUCCES", text);
    file.close();
    Un problème identique se pose dans la partie avec le QLabel.

    Bonne continuation,
    Amnell.

Discussions similaires

  1. Réponses: 13
    Dernier message: 19/04/2011, 16h28
  2. Réponses: 3
    Dernier message: 15/02/2010, 09h56
  3. la lecture du contenu d'un fichier
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/01/2009, 14h11
  4. Lecture du contenu d'un fichier
    Par nawal_ensias dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2007, 13h23
  5. [VB5] |Lecture du contenu d'un fichier .TXRT|
    Par jlb59 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/06/2006, 17h16

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