[Qt] Problème d'enregistrement de fichiers

Résolu
magicienap Messages postés 3 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 4 juillet 2009 - 4 juil. 2009 à 15:44
magicienap Messages postés 3 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 4 juillet 2009 - 4 juil. 2009 à 20:17
Bonjour à tous,

Je suis un débutant en programmation C++ et Qt.
J'essaie de me créer un éditeur de texte.

Je suis capable d'ouvrir et d'afficher un fichier, mais pas de l'enregistrer. Pourtant, mon code compile.

Voici mon code source :
Note : J'ai déclaré la zoneTexte et texteFichier dans le header.

/*
 *FenPrincipale.cpp
*/

#include "FenPrincipale.h"

FenPrincipale::FenPrincipale()
{
  
    //Menus
    QMenu *menuFichier = menuBar()->addMenu("&Fichier");

    //Actions
    //Ouvrir
    QAction *actionOuvrir = menuFichier->addAction("&Ouvrir");
    actionOuvrir->setShortcut(QKeySequence(QKeySequence::Open));
    actionOuvrir->setIcon(QIcon("images/icones/ouvrir16.png"));
    actionOuvrir->setStatusTip("Ouvre un fichier existant");

    connect(actionOuvrir, SIGNAL(triggered()), this, SLOT(ouvrir()));

    //Enregistrer
    QAction *actionEnregistrer = menuFichier->addAction("&Enregistrer");
    actionEnregistrer->setShortcut(QKeySequence(QKeySequence::Save));
    actionEnregistrer->setIcon(QIcon("images/icones/enregistrer16.png"));
    actionEnregistrer->setStatusTip("Enregistre le fichier courant");

    connect(actionEnregistrer, SIGNAL(triggered()), this, SLOT(enregistrer()));

     //Zone centrale
    QWidget *zoneCentrale = new QWidget;

    zoneTexte = new QTextEdit;

    QHBoxLayout *layoutCentral = new QHBoxLayout;
    layoutCentral->addWidget(zoneTexte);
    zoneCentrale->setLayout(layoutCentral);

    setCentralWidget(zoneCentrale);
}

void FenPrincipale::ouvrir()
{
    QString x = QFileDialog::getOpenFileName(this, "Ouvrir un fichier", QString(), "Fichier textes (*.txt)");
    QFile fichier(x);

    texteFichier = new QString;

    if(fichier.open(QIODevice::ReadWrite | QIODevice::Text))
    {
         *texteFichier = fichier.readAll();
    }
    else QMessageBox::critical(this, "Ouverture du fichier", "Impossible d'ouvrir le fichier.");

    FenPrincipale::zoneTexte->setText(*texteFichier);
    FenPrincipale::zoneTexte->show();
}

void FenPrincipale::enregistrer()
{
    QString x = QFileDialog::getSaveFileName(this, "Enregistrer un fichier", QString(), "Fichiers textes (*.txt)");
    QFile fichier(x);

    QString texte = FenPrincipale::zoneTexte->toPlainText();

    QTextStream flux(&fichier);
    flux << texte;

    fichier.close();

    exit(0);
}

1 réponse

magicienap Messages postés 3 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 4 juillet 2009
4 juil. 2009 à 20:17
J'ai posté sur un autre forum.

On m'a répondu que c'est parce que je n'avais pas ouvert le fichier sur lequel je souhaitais enregistrer le texte. Effectivement, c'était le cas. Voir
3
Rejoignez-nous