Bonjour a tous,
J'ai une class Translations avec un QString en tant que membre appelle "note".
Cette class est utilisee a partir de la class Term.
Comme vous pouvez voir dans le Term.cpp, je fais des tests pour recuperer et juste afficher le member "note", mais malheureusement, je n'arrive pas a mettre la main dessus.
Lorsque je cree l'objet currentTranslations, il n'y a pas de soucis, mais par contre, si je l'ajoute a la QList<Translations> et ensuite je veux l'afficher, impossible...
J'ai regarde, et la QList fait une copie memoire, donc pourquoi quand j'itere ma QList, je ne peux plus afficher mon "note" de mes objets?
Si quelqu'un comprend ou est mon probleme ?
Merci,
Je ne sais pas si j'ai été clair, mais vous pouvez me poser n'importe quelle question ou autre : )
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 #ifndef TERM_HPP #define TERM_HPP #include <QDebug> #include <QObject> #include <QVariant> #include <QString> #include <QList> #include <QMap> #include <iostream> #include "Translations.hpp" class Term { private: QList<Translations> principalTranslations; QList<Translations> additionalTranslations; public: Term () {} Term (const Term&) {} //from QVariant Term (const QVariant& variant) throw (int); virtual ~Term () {} //getters const QList<Translations> getPrincipalTranslations() const { return this->principalTranslations;} const QList<Translations> getAdditionalTranslations() const { return this->additionalTranslations;} friend ostream& operator<<(ostream& os, const Term& term) { QList<Translations> listTranslations; QList<Translations>::iterator itTranslations; listTranslations = term.getPrincipalTranslations(); os << "Principal translations:" << endl; for(itTranslations = listTranslations.begin(); itTranslations != listTranslations.end(); itTranslations++) os << (*itTranslations) << endl; listTranslations = term.getAdditionalTranslations(); os << "Additional translations:" << endl; for(itTranslations = listTranslations.begin(); itTranslations != listTranslations.end(); itTranslations++) os << (*itTranslations) << endl; return os; } }; #endif
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 #include "Term.hpp" Term::Term(const QVariant& variant) throw (int) { QMap<QString,QVariant> mapVariant = (variant.canConvert(QVariant::Map)) ? variant.toMap() : throw 1; QMap<QString,QVariant> mapTranslations; QMap<QString,QVariant>::iterator itMap, itMap2; Translations currentTranslations; this->principalTranslations = QList<Translations>(); this->additionalTranslations = QList<Translations>(); for (itMap = mapVariant.begin(); itMap != mapVariant.end(); itMap++) { if(itMap.key() == "PrincipalTranslations") { mapTranslations = (itMap.value().canConvert(QVariant::Map)) ? itMap.value().toMap() : throw 1; for (itMap2 = mapTranslations.begin(); itMap2 != mapTranslations.end(); itMap2++) { currentTranslations = Translations(itMap2.value()); this->principalTranslations.append(currentTranslations); cout << "TEST " << endl << currentTranslations << endl; //if I create an object here I get the "note" member QString pretty easily cout << "Test : " << Translations(itMap2.value()).getNote().toAscii().constData() << endl; QList<Translations>::iterator itTranslations; //if I iterate on the this->.appen which should had been added previously, I don't get anything for (itTranslations = this->principalTranslations.begin(); itTranslations != this->principalTranslations.end(); itTranslations++) cout << "TESTTESTES : " << itTranslations->getNote().toAscii().constData() << endl; Translations testTranslations = Translations(itMap2.value()); cout << "TEST" << endl << testTranslations << endl; } } else if (itMap.key() == "AdditionalTranslations") { mapTranslations = (itMap.value().canConvert(QVariant::Map)) ? itMap.value().toMap() : throw 1; for (itMap2 = mapTranslations.begin(); itMap2 != mapTranslations.end(); itMap2++) this->additionalTranslations.append(Translations(itMap2.value())); } else { //other } } }
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 #ifndef TRANSLATIONS_HPP #define TRANSLATIONS_HPP #include <QDebug> #include <QObject> #include <QVariant> #include <QString> #include <QList> #include <QMap> #include <iostream> #include "OriginalTerm.hpp" #include "Translation.hpp" using namespace std; class Translations { private: OriginalTerm originalTerm; QList<Translation> translations; QString note; public: Translations () {} Translations (const Translations&) {} //from QVariant Translations (const QVariant& variant) throw (int); virtual ~Translations () {} const OriginalTerm getOriginalTerm() const { return this->originalTerm; } const QList<Translation> getTranslations() const { return this->translations; } const QString getNote() const { return this->note;} friend ostream& operator<<(ostream& os, const Translations& translations) { os << "[Original Term]" << endl; os << "\t" << translations.getOriginalTerm() << endl; QList<Translation> listTranslation = translations.getTranslations(); QList<Translation>::iterator itTranslation; for(itTranslation = listTranslation.begin(); itTranslation != listTranslation.end(); itTranslation++) os << (*itTranslation) << endl; os << "[Note]" << endl << translations.getNote().toAscii().constData() << endl; return os; } }; #endif
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 #include "Translations.hpp" //from QVariant Translations::Translations (const QVariant& variant) throw (int) { QMap<QString,QVariant> mapVariant = (variant.canConvert(QVariant::Map)) ? variant.toMap() : throw 1; QMap<QString,QVariant>::iterator itMap; this->translations = QList<Translation>(); this->note = ""; for (itMap = mapVariant.begin(); itMap != mapVariant.end(); itMap++) { if (itMap.key() == "Note") { //we have the note this->note = itMap.value().toString(); } else if (itMap.key() == "OriginalTerm") { this->originalTerm = OriginalTerm(itMap.value()); } else { //we have to add a translation this->translations.append(Translation(itMap.value())); } } }
Partager