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.