我正在从treelistsamples文件夹构建wxWidgets 3.0.3项目。运行该树列表项目后,我得到一个窗口,从样式中选择了2-state-checkboxesmultiple 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/

10-11 19:33