我正在从treelist
的samples
文件夹构建wxWidgets 3.0.3
项目。运行该树列表项目后,我得到一个窗口,从样式中选择了2-state-checkboxes
和multiple selections
。然后我选择了该树的某些复选框。当我从Dumpselections
中单击operations
时。现在,当调试 Controller 进入OnDumpSelection()
时。在Ondumpselection()
中,执行getselections()
,此处getselections
应该返回所选节点的总数,并进入switch case的默认情况。然后,它应该执行for循环以显示每个选定的节点。但是,在调试时,我看不到numSelected
的正确值。此外,默认情况下的for循环未正确执行。是一个错误还是我在做一些错误?
void MyFrame::OnItemChecked(wxTreeListEvent& event)
{
wxTreeListItem item = event.GetItem();
wxCheckBoxState itemCheckboxState =m_treelist->GetCheckedState(item);
m_treelist->CheckItemRecursively(item, itemCheckboxState);
}
最佳答案
选择是指所选择的项目,而不是您似乎认为的已选中的复选框。没有像GetSelections()
这样的功能可以使所有项目都处于已检查状态,因为在实践中这通常并不有用:通常,您将查看顶级项目,测试是否已检查,然后查看其子项,等等。
但是,如果需要的话,当然可以编写GetCheckedItems()
函数,只需要递归地使用GetRootItem()
和GetFirstChild()
和GetNextSibling()
。
关于c++ - 对于wxWidgets 3.0.3中的wxtreelistctrl示例,Getselections()无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46986516/