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);
}