Getselections () ne fonctionne pas correctement pour l’exemple wxtreelistctrl de wxWidgets 3.0.3

Je construis treelist projet d’ treelist partir du dossier samples de wxWidgets 3.0.3 . Après avoir exécuté ce projet d’arborescence, j’ai eu une fenêtre, j’ai sélectionné 2-state-checkboxes et deux multiple selections de style. puis j’ai sélectionné certaines des cases à cocher de cet arbre. quand j’ai cliqué sur Dumpselections from operations . Maintenant, alors que le contrôleur de débogage se OnDumpSelection() à OnDumpSelection() . Dans Ondumpselection() , getselections() est exécuté. Ici, getselections doit renvoyer le nombre total de noeuds sélectionnés et entrer dans le cas par défaut du cas de commutation. Ensuite, il faut exécuter la boucle pour afficher chaque nœud sélectionné. Mais, lors du débogage, je ne suis pas en mesure de voir la valeur correcte de numSelected . En outre, for loop from default case ne s’exécute pas correctement. Est-ce un bug ou je fais une erreur?

 void MyFrame::OnItemChecked(wxTreeListEvent& event) { wxTreeListItem item = event.GetItem(); wxCheckBoxState itemCheckboxState =m_treelist->GetCheckedState(item); m_treelist->CheckItemRecursively(item, itemCheckboxState); } 

La sélection fait référence aux éléments sélectionnés et non aux cases à cocher comme vous semblez le supposer. Il n’existe pas de fonction semblable à GetSelections() pour obtenir tous les éléments dans l’état coché, ce qui n’est pas souvent utile dans la pratique: vous examinez généralement l’élément de niveau supérieur, vous testez s’il est coché, puis ses enfants, etc. .

Mais vous pouvez bien sûr écrire une fonction GetCheckedItems() si vous en avez besoin. Vous devrez simplement utiliser GetRootItem() , GetFirstChild() et GetNextSibling() manière récursive.