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 :

comment creer et écrire dans un fichier?


Sujet :

Qt

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut comment creer et écrire dans un fichier?
    Bonjour
    Bonjour, je n'arrive pas à trouver comment créer et écrire dans un fichier QFile dans la doc de Qt...

    voici ce que j'ai fait pour l'instant:


    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <QApplication>
    #include "FenPrincipale.h"
     
    int main(int argc, char* argv[])
    {
        QApplication app(argc, argv);
     
        FenPrincipale fenetre;
        fenetre.show();
     
        return app.exec();
    }
    FenCodeGenere.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
    28
    29
    #ifndef HEADER_FENCODEGENERE
    #define HEADER_FENCODEGENERE
    #include <iostream>
    #include <fstream>
    #include <QtGui>
    #include <QApplication>
     
    using namespace std;
     
    class FenCodeGenere : public QDialog
    {
    	public:
    		FenCodeGenere(QString &code, QString &codeCpp, QString &nom, QWidget *parent);
     
    	private:
            QTextEdit *codeGenere;
            QTextEdit *codeGenereCpp;
            QPushButton *fermer;
            QPushButton *fermerCpp;
            QPushButton *save;
            QPushButton *saveCpp;
     
        private slots:
        void enregistrer(QString &nom, QString &codeGenere);
        void enregistrerCpp(QString &nom);
    };
     
     
    #endif
    CodeGenere.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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #include "FenCodeGenere.h"
     
    FenCodeGenere::FenCodeGenere(QString &code, QString &codeCpp, QString &nom, QWidget *parent = 0) : QDialog(parent)
    {
            QTabWidget *onglets = new QTabWidget(this);
            onglets->setGeometry(30, 20, 450, 350);
     
            QWidget *page1 = new QWidget;
            QWidget *page2 = new QWidget;
     
        codeGenere = new QTextEdit();
        codeGenere->setPlainText(code);
        codeGenere->setReadOnly(true);
        codeGenere->setFont(QFont("Courier"));
        codeGenere->setLineWrapMode(QTextEdit::NoWrap);
     
        codeGenereCpp = new QTextEdit();
        codeGenereCpp->setPlainText(codeCpp);
        codeGenereCpp->setReadOnly(true);
        codeGenereCpp->setFont(QFont("Courier"));
        codeGenereCpp->setLineWrapMode(QTextEdit::NoWrap);
     
        fermer = new QPushButton("Fermer");
        fermerCpp = new QPushButton("Fermer");
        save = new QPushButton("Sauvegarder");
        saveCpp = new QPushButton("Sauvegarder");
     
        QGridLayout *layoutPrincipal = new QGridLayout;
        layoutPrincipal->addWidget(codeGenere, 0, 0, 2, 1);
        layoutPrincipal->addWidget(fermer, 0, 1);
        layoutPrincipal->addWidget(save, 0, 1);
     
     
     
        QGridLayout *layoutPrincipalCpp = new QGridLayout;
        layoutPrincipalCpp->addWidget(codeGenereCpp, 0,0,2,1);
        layoutPrincipalCpp->addWidget(fermerCpp,1,1);
        layoutPrincipalCpp->addWidget(saveCpp,2,1);
     
        page1->setLayout(layoutPrincipal);
        page2->setLayout(layoutPrincipalCpp);
     
        onglets->addTab(page1, nom + ".h");
        onglets->addTab(page2, nom + ".cpp");
     
        connect(save, SIGNAL(pressed()), this, SLOT(enregistrer(QString &nom,QString &code)));
        connect(fermer, SIGNAL(clicked()), this, SLOT(accept()));
        connect(fermerCpp, SIGNAL(clicked()), this, SLOT(accept()));
    }
     
    void FenCodeGenere::enregistrer(QString &nom, QString &codeGenere)
    {
        QString dossier = QFileDialog::getSaveFileName(this, "sauvegarde");
        QByteArray code= codeGenere.toAscii();
        dossier += "\\" + nom + ".h";
     
        QFile fichier;
       QDir::setCurrent(dossier);
       fichier.setFileName(nom +".h");
     
         fichier.open(QIODevice::WriteOnly);
     
     
            fichier.write(code);
     
            QMessageBox::information(this, "Réussite de sauvegarde", "Vous venez de sauvegarder le code: "
            + nom +  ".h dans le dossier: " + dossier, QMessageBox::Close);
     
     
     
    }
    FenPrincipale.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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #ifndef HEADER_FENPRINCIPALE
    #define HEADER_FENPRINCIPALE
     
    #include <QtGui>
    #include <QApplication>
     
    class FenPrincipale : public QWidget
    {
        Q_OBJECT
     
     
        public:
            FenPrincipale();
     
        private slots:
            void genererCode();
     
     
        private:
            QLineEdit *nom;
            QLineEdit *classeMere;
            QCheckBox *protections;
            QCheckBox *genererConstructeur;
            QCheckBox *genererDestructeur;
            QGroupBox *groupCommentaires;
            QCheckBox *inclureQt;
            QCheckBox *inclureStd;
            QLineEdit *auteur;
            QDateEdit *date;
            QTextEdit *role;
            QPushButton *generer;
            QPushButton *quitter;
     
    };
     
    #endif
    FenPrincipale.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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    #include "FenPrincipale.h"
    #include "FenCodeGenere.h"
     
    FenPrincipale::FenPrincipale()
    {
     
        // Groupe : Définition de la classe
        nom = new QLineEdit;
        classeMere = new QLineEdit;
     
        QFormLayout *definitionLayout = new QFormLayout;
        definitionLayout->addRow("&Nom :", nom);
        definitionLayout->addRow("Classe &mère :", classeMere);
     
        QGroupBox *groupDefinition = new QGroupBox("Définition de la classe");
        groupDefinition->setLayout(definitionLayout);
     
     
        // Groupe : Options
     
        protections = new QCheckBox("Protéger le &header contre les inclusions multiples");
        protections->setChecked(true);
        genererConstructeur = new QCheckBox("Générer un &constructeur par défaut");
        genererDestructeur = new QCheckBox("Générer un &destructeur");
        inclureQt = new QCheckBox("Inclure Qt");
        inclureStd = new QCheckBox("Inclure Stdstream");
        QVBoxLayout *optionsLayout = new QVBoxLayout;
        optionsLayout->addWidget(protections);
        optionsLayout->addWidget(genererConstructeur);
        optionsLayout->addWidget(genererDestructeur);
        optionsLayout->addWidget(inclureStd);
        optionsLayout->addWidget(inclureQt);
     
        QGroupBox *groupOptions = new QGroupBox("Options");
        groupOptions->setLayout(optionsLayout);
     
     
     
        // Groupe : Commentaires
     
        auteur = new QLineEdit;
        date = new QDateEdit;
        date->setDate(QDate::currentDate());
        role = new QTextEdit;
     
        QFormLayout *commentairesLayout = new QFormLayout;
        commentairesLayout->addRow("&Auteur :", auteur);
        commentairesLayout->addRow("Da&te de création :", date);
        commentairesLayout->addRow("&Rôle de la classe :", role);
     
        groupCommentaires = new QGroupBox("Ajouter des commentaires");
        groupCommentaires->setCheckable(true);
        groupCommentaires->setChecked(false);
        groupCommentaires->setLayout(commentairesLayout);
     
     
        // Layout : boutons du bas (générer, quitter...)
        generer = new QPushButton("&Générer !");
        quitter = new QPushButton("&Quitter");
     
        QHBoxLayout *boutonsLayout = new QHBoxLayout;
        boutonsLayout->setAlignment(Qt::AlignRight);
     
        boutonsLayout->addWidget(generer);
        boutonsLayout->addWidget(quitter);
     
     
        // Définition du layout principal, du titre de la fenêtre, etc.
     
        QVBoxLayout *layoutPrincipal = new QVBoxLayout;
        layoutPrincipal->addWidget(groupDefinition);
        layoutPrincipal->addWidget(groupOptions);
        layoutPrincipal->addWidget(groupCommentaires);
        layoutPrincipal->addLayout(boutonsLayout);
     
        setLayout(layoutPrincipal);
        setWindowTitle("Zero Class Generator");
        setWindowIcon(QIcon("icone.png"));
        resize(400, 450);
     
     
        // Connexions des signaux et des slots
        connect(quitter, SIGNAL(clicked()), qApp, SLOT(quit()));
        connect(generer, SIGNAL(clicked()), this, SLOT(genererCode()));
     
    }
     
     
    void FenPrincipale::genererCode()
    {
        QString nomClasse = nom->text();
        // On vérifie que le nom de la classe n'est pas vide, sinon on arrête
        if (nom->text().isEmpty())
        {
            QMessageBox::critical(this, "Erreur", "Veuillez entrer au moins un nom de classe");
            return; // Arrêt de la méthode
        }
     
        // Si tout va bien, on génère le code
        QString code, codeCpp;
     
        if (groupCommentaires->isChecked()) // On a demandé à inclure les commentaires
        {
            code += "/*\nAuteur : " + auteur->text() + "\n";
            code += "Date de création : " + date->date().toString() + "\n\n";
            code += "Rôle :\n" + role->toPlainText() + "\n*/\n\n\n";
     
            codeCpp += "/*\nAuteur : " + auteur->text() + "\n";
            codeCpp += "Date de création : " + date->date().toString() + "\n\n";
            codeCpp += "Rôle :\n" + role->toPlainText() + "\n*/\n\n\n";
        }
     
        if (protections->isChecked())
        {
            code += "#ifndef HEADER_" + nom->text().toUpper() + "\n";
            code += "#define HEADER_" + nom->text().toUpper() + "\n\n\n";
        }
        if (inclureStd->isChecked())
        {
            code += "#include <iostream>\n using namespace std;\n\n";
        }
        if (inclureQt->isChecked())
        {
            code += "#include <QtGui>\n#include <QApplication>\n\n";
        }
     
     
        codeCpp += "#include \"" + nomClasse + ".h\"\n\n\n";
     
        code += "class " + nomClasse;
     
        if (!classeMere->text().isEmpty())
        {
            code += " : public " + classeMere->text();
        }
     
        codeCpp += nomClasse + "::" + nomClasse + "()\n";
     
        code += "\n{\n    public:\n";
     
        if (genererConstructeur->isChecked())
        {
            code += "        " + nom->text() + "();\n";
            codeCpp += "        " + nom->text() + "()\n{\n\n\n}\n\n";
        }
        if (genererDestructeur->isChecked())
        {
            code += "        ~" + nom->text() + "();\n";
            codeCpp += "        ~" + nom->text() + "()\n{\n\n\n}\n\n";
        }
        code += "\n\n    protected:\n";
        code += "\n\n    private:\n";
        code += "};\n\n";
     
        if (protections->isChecked())
        {
            code += "#endif\n";
        }
     
     
        // On crée puis affiche la fenêtre qui affichera le code généré, qu'on lui envoie en paramètre
        FenCodeGenere *fenetreCode = new FenCodeGenere(code, codeCpp, nomClasse, this);
        fenetreCode->exec();
    }
    Pouvez vous m'aidez à enregistrer dans un fichier s'il vous plait?

    merci d'avance

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut et bienvenue sur le forum.
    Tu as un problème de compilation? rien ne se passe? ca plante? autre?

    ps: il faut utiliser [...] et non <...> pour les balise code (bouton #)

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    voici ce que m'affiche le ms dos:

    FenCodeGenere.cpp:64: error: no matching function for call to `QFile::write(QTex
    tEdit*&)'
    c:/Qt/4.4.3/include/QtCore/../../src/corelib/io/qiodevice.h:119: note: candidate
    s are: qint64 QIODevice::write(const char*, qint64)
    c:/Qt/4.4.3/include/QtCore/../../src/corelib/io/qiodevice.h:121: note:
    qint64 QIODevice::write(const QByteArray&)


    Quel est le probleme?

  4. #4
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Salut

    Essaye déjà de remplacer : fichier::write(codeGenere);
    par fichier.write(codeGenere);
    Et à mon avis je ne sais pas trop ce qu'est codeGnerere, mais je mettrais codeGenere->toPlainText().toStdString().c_str()

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    C'est un QString, donc ce n'est pas ça (j'ai quand même essayer)

    Je rajoute les autres dossiers au premier message pour vous aider.

    Merci quand même

  6. #6
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Etrange
    je lis :
    codeGenere = new QTextEdit();
    A mon avis ton probleme vient de la compte tenu de ton message d'erreur

    FenCodeGenere.cpp:64: error: no matching function for call to `QFile::write(QTex
    tEdit*&)'


    Ensuite ici, je pensais que l'on ne devait metre que les prototype des fonctions sans variable.
    connect(save, SIGNAL(clicked()), this, SLOT(enregistrer(nom, codeGenere)));

    Plutot

    connect(save, SIGNAL(clicked()), this, SLOT(enregistrer(QString &,QString &)));

    Mais là je ne vois pas trop comment ca peut fonctionner avec clicked()...

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par uriotcea Voir le message
    Etrange
    je lis :
    codeGenere = new QTextEdit();
    A mon avis ton probleme vient de la compte tenu de ton message d'erreur

    FenCodeGenere.cpp:64: error: no matching function for call to `QFile::write(QTex
    tEdit*&)'
    +1
    Ensuite ici, je pensais que l'on ne devait metre que les prototype des fonctions sans variable.
    connect(save, SIGNAL(clicked()), this, SLOT(enregistrer(nom, codeGenere)));

    Plutot

    connect(save, SIGNAL(clicked()), this, SLOT(enregistrer(QString &,QString &)));
    oui
    Mais là je ne vois pas trop comment ça peut fonctionner avec clicked()...
    t'auras un warning dans la console et le connect ne marchera pas.

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    J'ai réussit à résoudre le problème du write, mais je ne comprend pas pourquoi le connect ne marche pas?

    J'édit le premier poste pour les nouveautés du codes.
    Merci de m'avoir répondu.

  9. #9
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Comme je te l'ai déjà indiqué pas de variable dans les slots donc ce qui suit n'est pas correct:

    connect(save, SIGNAL(pressed()), this, SLOT(enregistrer(QString &nom,QString &code)));

    Tu dois ecrire :

    connect(save, SIGNAL(pressed()), this, SLOT(enregistrer(QString &,QString &)));

    Ce qui compilera, mais ne fera rien à l'execution parce que le SIGNAL utilisé ici ne correpond pas du tout au SLOT demandé.
    Il va falloir que tu revois la fonction enregistrer de maniere à lui envoyer ces 2 String d'une autre maniere

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Regarde dans la FAQ et dans les tuto, tu trouvera des explications.

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    j'ai corriger ça, mais je n'arrive plus à faire des QString + "...." , sa me met des erreurs:
    FenCodeGenere.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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #include "FenCodeGenere.h"
     
    FenCodeGenere::FenCodeGenere(QString &code, QString &codeCpp, QString &nomCode, QWidget *parent = 0) : QDialog(parent)
    {
            QTabWidget *onglets = new QTabWidget(this);
            onglets->setGeometry(30, 20, 450, 350);
     
            QWidget *page1 = new QWidget;
            QWidget *page2 = new QWidget;
            QString *nom = &nomCode;
        codeGenere = new QTextEdit();
        codeGenere->setPlainText(code);
        codeGenere->setReadOnly(true);
        codeGenere->setFont(QFont("Courier"));
        codeGenere->setLineWrapMode(QTextEdit::NoWrap);
     
        codeGenereCpp = new QTextEdit();
        codeGenereCpp->setPlainText(codeCpp);
        codeGenereCpp->setReadOnly(true);
        codeGenereCpp->setFont(QFont("Courier"));
        codeGenereCpp->setLineWrapMode(QTextEdit::NoWrap);
     
        fermer = new QPushButton("Fermer");
        fermerCpp = new QPushButton("Fermer");
        save = new QPushButton("Sauvegarder");
        saveCpp = new QPushButton("Sauvegarder");
     
        QGridLayout *layoutPrincipal = new QGridLayout;
        layoutPrincipal->addWidget(codeGenere, 0, 0, 2, 1);
        layoutPrincipal->addWidget(fermer, 0, 1);
        layoutPrincipal->addWidget(save, 0, 1);
     
     
     
        QGridLayout *layoutPrincipalCpp = new QGridLayout;
        layoutPrincipalCpp->addWidget(codeGenereCpp, 0,0,2,1);
        layoutPrincipalCpp->addWidget(fermerCpp,1,1);
        layoutPrincipalCpp->addWidget(saveCpp,2,1);
     
        page1->setLayout(layoutPrincipal);
        page2->setLayout(layoutPrincipalCpp);
     
        onglets->addTab(page1, nom + ".h");
        onglets->addTab(page2, nom + ".cpp");
     
        connect(save, SIGNAL(clicked()), this, SLOT(enregistrer()));
        connect(fermer, SIGNAL(clicked()), this, SLOT(accept()));
        connect(fermerCpp, SIGNAL(clicked()), this, SLOT(accept()));
    }
     
    void FenCodeGenere::enregistrer()
    {
     
        QString dossier = QFileDialog::getSaveFileName(this);
        QByteArray code= codeGenere.toUtf8 ();
        dossier += "\\" + nom + ".h";
     
        QFile fichier;
       QDir::setCurrent(dossier);
       fichier.setFileName(nom +".h");
     
         fichier.open(QIODevice::WriteOnly);
     
     
            fichier.write(code);
            QString *ensemble =
            QMessageBox::information(this, "Réussite de sauvegarde", "Vous venez de sauvegarder le code: "
            + nom +  ".h dans le dossier: " + dossier, QMessageBox::Close);
     
    }

  12. #12
    Membre confirmé

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Points : 644
    Points
    644
    Par défaut
    C'est parce que nom n'est pas du type QString mais QString*

  13. #13
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Ok merci, j'ai changer.

    Je n'arrive pas à utiliser la fonction toUtf8() de QString, je ne comprends pas pourquoi...

    le 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
    void FenCodeGenere::enregistrer()
    {
     
        QString dossier = QFileDialog::getSaveFileName(this);
        QByteArray code= codeGenere.toUtf8(); /*ici ç amet que ce n'est pas définit*/
     
        dossier += "\\" + nom + ".h";
     
        QFile fichier;
       QDir::setCurrent(dossier);
       fichier.setFileName(nom +".h");
     
         fichier.open(QIODevice::WriteOnly);
     
     
            fichier.write(code);
     
            QMessageBox::information(this, "Réussite de sauvegarde", "Vous venez de sauvegarder le code: "
            + nom +  ".h dans le dossier: " + dossier, QMessageBox::Close);
     
    }

  14. #14
    Membre confirmé

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Points : 644
    Points
    644
    Par défaut
    Ton codeGenere est un QTextEdit*, donc d'une part ça ne marchera pas d'accéder aux fonctions membres par . (il faut utiliser ->). Et deuxièmement QTextEdit n'a pas de fonction toUtf8(), c'est QString qui en a une.

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

Discussions similaires

  1. comment lire et écrire dans un fichier excel
    Par aefmaaradji dans le forum VBScript
    Réponses: 2
    Dernier message: 22/06/2010, 18h10
  2. [XML/Glib/GTK+] Comment lire et écrire dans un fichier XML
    Par Skarsnick dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 19/08/2009, 10h20
  3. Comment creer un tableau dans 1 fichier excel (vb.net)
    Par lolymeupy dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/01/2009, 11h08
  4. comment je peut écrire dans un fichier excel
    Par kris1 dans le forum Visual Studio
    Réponses: 3
    Dernier message: 24/04/2008, 17h59
  5. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 16h16

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