2009-01-07 6 views
2

Quelle est la meilleure façon de supprimer une ligne (QTreeWidgetItem) d'un QTreeWidget?Suppression de lignes de QTreeWidget (programmation qt)

Le contenu QTreeWidget a été fixé par:

myQTreeWidget->insertTopLevelItems(0, items); // items = QList<QTreeWidgetItem*> 

puis-je supprimer un élément de mes QList « articles » et j'essaie de supprimer/réinitialiser le QTreeWidget

packList->clear();  
packList->insertTopLevelItems(0, items); 

mais mes application se bloque ici! Suggestions?

Répondre

3

Votre problème est que l'appel packList->clear() supprime les éléments du widget arborescence contenus dans l'arborescence. (Voir la documentation sur QTreeWidget::clear(), qui inclut une note sur les éléments à supprimer de l'arborescence avant de les supprimer.) Vous devrez soit trouver un moyen de supprimer les éléments, soit ne pas les conserver séparément de l'arborescence. Sur une note légèrement liée, si vous essayez de garder une trace d'autres données avec l'arbre, je vous recommande d'essayer d'utiliser le paradigme des modèles. Dans des cas non triviaux, il a généralement été utile de convertir à cette technique, plutôt que d'utiliser les widgets/éléments.

1

D'après ce que this documentation dit, vous devriez être en mesure de le faire avec:

packList->takeTopLevelItem(index); 

qui retourne Retire et renvoie l'élément à l'index fourni.

Questions connexes