Transférer un set dans un QStringList (QT)

Résolu/Fermé
Kaos - 8 mars 2009 à 16:39
 Kaos - 9 mars 2009 à 13:09
Bonjour, voila mon problème :

J'aimerai pouvoir stocker dans un QListString les éléments d'un set (ou multiset, au choix). Malheureusement, quoi que je fasse, je me trouve toujours confronté à un problème de compatibilité. Voila un de mes test :

set<string> setStr;
string s = "Aaaa";

setStr.insert(s);
s = "Caa";
setStr.insert(s);
s = "Baaa";
setStr.insert(s);
s = "Zaaa";
setStr.insert(s);

QStringList test;
QByteArray b;

for (set<string>::const_iterator p = setStr.begin( );p != setStr.end( ); ++p)
{
//char * tempsChar;
//aa = (*char)p.c_str();
QString tempString = *p;
//b.append(c);
test<<tempsString;
cout << test.count() << endl;
}

Les lignes en commentaire sont plusieurs tests que j'ai fait, mais aucun ne fonctionnent. Donc je m'en remet à votre grande sagesse pour me dire comment faire...

Merci d'avance!
A voir également:

6 réponses

Je ne sais pas si ma réponse va éclairer ta lanterne.
Je programme beaucoup avec Qt, car je trouve que c'est une bibliothèque bien construite et bien fournie.
Quand j'utilise Qt dans un programme, je n'utilise plus que des classes de Qt; en clair j'oublie les classes du C++, par exemple pas de 'cout' mais 'qDebug'.
'QStringList' est une classe dérivée de 'QList' ou plus exactement de 'QList<QString>'; cette classe permet donc de gérer des 'QString' et non pas des pointeurs vers des 'strings'. Si la classe 'QStringList' ne te convient pas, tu peux créér un 'QList<QString*>' voire un 'QList<string*>'.
En espérant, t'avoir aidé.
0
Oui, je me doute, mais mon niveau de QT me ferait perdre du temps en faisant moi même cette classe, alors que le set existe.

N'y a t il vraiment aucun moyen de l'utiliser?
0
Mais il n'y a pas à faire une classe, tout au plus, parfois et même souvent, la dériver.
Mais ici ce n'est même pas la peine !
Tu peux remplacer tes lignes de code:
set<string> setStr;
string s = "Aaaa";
setStr.insert(s);
s = "Caa";
setStr.insert(s);
s = "Baaa";
setStr.insert(s);
s = "Zaaa";
setStr.insert(s);
par:
QStringList  test = (QStringList() << "Aaaa" << "Caa" << "Baaa" << "Zaaa");
Alors convaincu par Qt ?
0
Non justement, un QStringList n'a pas la fonctionnalité qu'il me faut : un tris automatique! Si j'inverse l'ordre des ajouts, la première clef sera toujours "Aaaa" et la dernière "Zaaa".

Donc désolé, mais toujours pas convaincu ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pour avoir la liste triée, rien de plus simple:
QStringList  test = (QStringList() <<"Aaaa"<<"Caa"<<"Baaa"<<"Zaaa");
test.sort();
Alors convaincu par Qt ?
0
Ok, cette fois t'as gagné, et je me sens un peu bête en prime ^^

Merci beaucoup en tout cas!!
0