[Qt] Problème d'enregistrement de fichiers

[Résolu]
Signaler
Messages postés
3
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
4 juillet 2009
-
Messages postés
3
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
4 juillet 2009
-
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

Messages postés
3
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
4 juillet 2009

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