Salut à tous
Je suis toujours débutant en C++, et je travaille actuellement sur le créateur de classes d'un cours C++. 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 :
fenetrePrincipale.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
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; }
main.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 #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
Merci d'avance
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 #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(); }
Thomas
Partager