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 :

Ouverture de fichiers à partir d'une QComboBox

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Par défaut Ouverture de fichiers à partir d'une QComboBox
    Bonsoir à tous et à toutes,

    J’avais une petite question en Qt.
    Voilà*: je souhaite créer une QComboBox qui ouvre automatiquement le fichier .txt que l’on sélectionne. Le programme fait donc apparaitre une liste déroulante contenant 4 noms de fichier (fichierA, fichierB, fichierC, fichierD) ainsi qu’un QPushButton que l’on actionne une fois que l’on a sélectionné le fichier que l’on souhaite ouvrir (respectivement fichierA.txt, etc.).

    J’ai donc écrit le programme suivant*:

    main.cpp

    #include <QApplication>
    #include <QtGui>
    #include "MaFenetre.h"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        MaFenetre fenetre;
        fenetre.show();
     
        return app.exec();
    }





    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
    #include "MaFenetre.h"
    MaFenetre::MaFenetre() : QWidget()
    {
        setFixedSize(300, 150);
        // Construction du bouton
        m_bouton = new QPushButton("Ouvrir", this);
        m_bouton->setFont(QFont("Comic Sans MS", 14));
        m_bouton->setCursor(Qt::PointingHandCursor);
        m_bouton->move(120, 70);
     
        box = new QComboBox(this);
        box->addItem("fichierA");
        box->addItem("fichierB");
        box->addItem("fichierC");
        box->addItem("fichierD");
        box->move(30, 20);
     
     
        QObject::connect(box, SIGNAL(currentIndexChanged(QString)), this, SLOT(ouvrirFichier()));
     
      }
     
     
     
     
    void MaFenetre :: ouvrirFichier()
    {
     
        QTextEdit zoneTexte;
        QString texte;
        zoneTexte.setGeometry(100,100,400,200);
        zoneTexte.setReadOnly(true);
     
     
     
    for (int i=0; i<box->count(); ++i) {
     
        QFile fichier("setCurrentItem(i).txt");
     
        if(fichier.open(QIODevice::ReadOnly | QIODevice::Text))
        {
             texte = fichier.readAll();
             fichier.close();
        }
        else texte = "Impossible d'ouvrir le fichier !";
     
        zoneTexte.setText(texte);
        zoneTexte.show();
    }
    }



    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
    20
    21
    22
    23
    24
    25
    26
    27
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <QTextEdit>   
    #include <QFile>       
    #include <QString>     
    #include <QTextStream>
    #include <QFileDialog>
    #include <QtGui>
    class MaFenetre : public QWidget // On hérite de QWidget 
    {
        public:
        MaFenetre();
        private:
        QPushButton *m_bouton;
        QComboBox *box;
     
     
        public slots:
        void ouvrirFichier();
     
     
     
    };
    #endif



    Lorsque je lance ce programme, il n'y a pas d'erreurs mais ça ne marche pas. La page Fenetre.cpp est sans doute fausse mais je ne sais pas comment faire.

    Si l’un (l’une) de vous a la solution à ce problème, ça m’intéresse beaucoup.
    Merci d’avance*!!!

    PS*: soyez indulgents, je débute en programmation…*

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 155
    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 155
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    En effet cela ne peut pas fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QFile fichier("setCurrentItem(i).txt");
    Ce code essaie d'ouvrir un fichier nommer "setCurrentItem(i).txt". Alors que vous, vous voulez le nom retournée par la fonction setCurrentItem(i);

    Du coup, il faut faire, plus dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QFile fichier(setCurrentItem(i) + QString(".txt"));
    Ce qui exécutera le code setCurrentItem(i) et qui a son résultat, concaténera la chaine de caractères ".txt"
    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 à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    salut !

    merci beaucoup pour ta réponse. J'avoue que ta solution a l'air pas mal. Par contre quand je remplace ma ligne de code par la tienne, l'ordi me répond "setCurrentItem" : identifier not found.

    Je suis sûr que je bloque sur quelque chose de basique mais je ne sais pas comment faire donc si quelqu'un a une idée, je suis preneur...
    merci beaucoup !!!

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    setCurrentItem() est bien sûr une méthode de QComboBox, pas de "MaFenetre". De plus, tu ne veux visiblement rien "set" du tout, mais tu veux récupérer la valeur. Tu devrais donc avoir un accesseur pour ça (au hasard quelque chose qui serait nommée logiquement "currentItem()" et donc faut voir si elle renvoie ce que tu veux).

Discussions similaires

  1. compresser un fichier à partir d'une application
    Par Julian21 dans le forum C++
    Réponses: 6
    Dernier message: 20/06/2007, 22h32
  2. Réponses: 4
    Dernier message: 01/12/2005, 01h01
  3. ouverture de formulaire à partir d'une requéte
    Par gaetanef dans le forum Access
    Réponses: 5
    Dernier message: 21/11/2005, 15h51
  4. Copier un fichier à partir d'une URL ?
    Par oulahoup dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2005, 21h52
  5. [SERVLET]Appel d'un fichier à partir d'une servlet
    Par fchafia dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 17/03/2005, 12h21

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