Salut,
Je teste pas mal de trucs différents en ce moment, dont Qt. Et je me suis tourné vers les arbres. C'est bien pratique. Et puis, j'ai voulu faire mon cochon, et tenter d'initialiser mon arbre en 3 lignes, avec un code un poil abstrait à base de templates, d'allocateurs, et de nombres.
En gros, voici ce que ça me donne :
Où ui::nbPrimitives est le nombre de primitives et tree l'arbre qui va accueillir les QTreeWidgetItems. Vient ensuite les propriétés textuelles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part primitives = new QVector<QTreeWidgetItem*>(ui::nbPrimitives, new QTreeWidgetItem(tree));
Et là encore, tout se passe bien. J'ai même, via un logger, obtenu la sortie suivante par rapport à cette boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for (QVector<QTreeWidgetItem*>::Iterator it = primitives->begin(), end = primitives->end(); it != end; ++it, ++i) (*it)->setText(0, ui::primitives[i]);
Seulement, quand je lance mon programme, il apparaît que seule la dernière primitive est définie dans l'arbre. Vous pouvez avoir un rapide visuel sur la pièce-jointe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Debugging starts PRIMITIVE Plan PRIMITIVE Cylindre PRIMITIVE Tore PRIMITIVE Octaèdre régulier PRIMITIVE Théière Debugging has finished
Le hic, c'est que je comprends pas pourquoi. Je n'ai rien changé par rapport à mon code précédent, si ce n'est le fait d'instancier l'ensemble de mes QTreeWidgetItem en une seule ligne.
Alors... je me demande si l'un de vous saurait peut-être ? Est-ce un oubli de ma part ? Ou bien un bug de Qt et de ses macros ?
Merci d'avance à tous les tordus qui pourront m'aider à comprendre, ou me convaincre d'y renoncer.
Partager