Mon programme Qt cesse de fonctionner
Salut à tous
Je suis toujours débutant en C++, et je travaille actuellement sur le créateur de classes d'un cours C++ :D. Cependant, lorsque j'utilise la méthode QTextEdit->setPlainText dans un SLOT, le programme cesse de fonctionner. Bizarrement si j'utilise la méthode ailleurs tout va. Et si j'enlève l'appel à la fonction du SLOT tout va aussi. Savez-vous de quoi vient ce problème ? Voici mes codes :
fenetrePrincipale.cpp :
Code:
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
| #include "fenetrePrincipale.h"
fenetrePrincipale::fenetrePrincipale(QWidget *parent) :
QWidget(parent)
{
QVBoxLayout *conteneur = new QVBoxLayout;
QVBoxLayout *conteneurOptions = new QVBoxLayout;
QVBoxLayout *conteneurCommentaires = new QVBoxLayout;
QGroupBox *definition = new QGroupBox("Définition de la classe");
QGroupBox *options = new QGroupBox("Options");
QGroupBox *commentaires = new QGroupBox("Commentaires");
QFormLayout *formCommentaires = new QFormLayout;
QFormLayout *formDefinition = new QFormLayout;
QLineEdit *nomClasse = new QLineEdit;
QLineEdit *mereClasse = new QLineEdit;
QLineEdit *auteurClasse = new QLineEdit;
QDateEdit *dateCreation = new QDateEdit;
QTextEdit *roleClasse = new QTextEdit();
QCheckBox *protegerHeader = new QCheckBox("Protéger le header contre les inclusions multiples");
QCheckBox *genererConstructeur = new QCheckBox("Générer un constructeur par défaut");
QCheckBox *genererDestructeur = new QCheckBox("Générer un destructeur par défaut");
QCheckBox *ajouterCommentaires = new QCheckBox("Ajouter des commentaires");
QPushButton *boutonValider = new QPushButton("Valider");
conteneurOptions->addWidget(protegerHeader);
conteneurOptions->addWidget(genererConstructeur);
conteneurOptions->addWidget(genererDestructeur);
options->setLayout(conteneurOptions);
formDefinition->addRow("Nom de la classe :", nomClasse);
formDefinition->addRow("Mère de la classe :", mereClasse);
conteneurCommentaires->addWidget(ajouterCommentaires);
formCommentaires->addRow("Auteur de la classe :", auteurClasse);
formCommentaires->addRow("Date de la classe :", dateCreation);
formCommentaires->addRow("Rôle de la classe :", roleClasse);
conteneurCommentaires->addLayout(formCommentaires);
commentaires->setLayout(conteneurCommentaires);
definition->setLayout(formDefinition);
conteneur->addWidget(definition);
conteneur->addWidget(options);
conteneur->addWidget(commentaires);
conteneur->addWidget(boutonValider);
this->setLayout(conteneur);
QObject::connect(boutonValider, SIGNAL(clicked()), this, SLOT(creerContenu()));
}
void fenetrePrincipale::afficherContenu(QString contenu) {
}
QString fenetrePrincipale::creerContenu() {
QString contenu("");
if(ajouterCommentaires->checkState()) {
contenu += "\n/*";
if (auteurClasse->text() != "") {
contenu += "\nAuteur : " + auteurClasse->text();
}
contenu += "\nDate de création : " + dateCreation->date().toString();
if (roleClasse->toPlainText() != "") {
contenu += "\nCommentaires : " + roleClasse->toPlainText();
}
contenu += "\n*/\n\n";
}
if (protegerHeader->checkState()) {
contenu += "#ifndef FENETREPRINCIPALE_H\n";
contenu += "#define FENETREPRINCIPALE_H\n";
}
contenu += "class " + nomClasse->text();
if (mereClasse->text() != "") {
contenu += " : public " + mereClasse->text();
}
contenu += "\n{\n";
contenu += " public:\n";
if (genererConstructeur->checkState()) {
contenu += " " + nomClasse->text() + "\n";
} else {
contenu += " \n";
}
if (genererDestructeur->checkState()) {
contenu += " ~" + nomClasse->text() + "\n";
} else {
contenu += " \n";
}
contenu += " \n";
contenu += " \n";
contenu += " protected:\n";
contenu += " \n";
contenu += " \n";
contenu += " \n";
contenu += " \n";
contenu += " private:\n";
contenu += " \n";
contenu += " \n";
contenu += " \n";
contenu += " \n";
if (protegerHeader->checkState()) {
contenu += "#endif // FENETREPRINCIPALE_H\n";
}
contenu += "\n}";
roleClasse->setPlainText(contenu);
return contenu;
} |
fenetrePrincipale.h :
Code:
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
| #ifndef FENETREPRINCIPALE_H
#define FENETREPRINCIPALE_H
#include <QTGui>
#include <QVBoxLayout>
#include <QWidget>
#include <QGroupBox>
#include <QFormLayout>
#include <QLineEdit>
#include <QDateEdit>
#include <QTextEdit>
#include <QCheckBox>
#include <QPushButton>
class fenetrePrincipale : public QWidget
{
Q_OBJECT
public:
explicit fenetrePrincipale(QWidget *parent = 0);
signals:
public slots:
void afficherContenu(QString contenu);
QString creerContenu();
private:
QVBoxLayout *conteneur;
QVBoxLayout *conteneurOptions;
QVBoxLayout *conteneurCommentaires;
QGroupBox *definition;
QGroupBox *options;
QGroupBox *commentaires;
QFormLayout *formCommentaires;
QFormLayout *formDefinition;
QLineEdit *nomClasse;
QLineEdit *mereClasse;
QLineEdit *auteurClasse;
QDateEdit *dateCreation;
QTextEdit *roleClasse;
QCheckBox *protegerHeader;
QCheckBox *genererConstructeur;
QCheckBox *genererDestructeur;
QCheckBox *ajouterCommentaires;
QPushButton *boutonValider;
};
#endif // FENETREPRINCIPALE_H |
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <QTGui>
#include "fenetrePrincipale.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString locale = QLocale::system().name().section('_', 0, 0);
QTranslator translator;
translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&translator);
fenetrePrincipale *maFenetre = new fenetrePrincipale;
maFenetre->show();
return app.exec();
} |
Merci d'avance
Thomas