我想使用 ImGui 创建一个嵌套的树视图 ui 组件。结果将如下所示:
这是创建Selectable()
元素嵌套所需的代码,如下所示:
void imgui_nested_tree() {
bool is_expanded = ImGui::TreeNodeExV( (void*)nullptr, ImGuiTreeNodeFlags_FramePadding, "", nullptr);
ImGui::SameLine();
ImGui::Selectable("outer selectable", false);
if (is_expanded) {
bool is_expanded = ImGui::TreeNodeExV( (void*)nullptr, ImGuiTreeNodeFlags_FramePadding, "", nullptr);
ImGui::SameLine();
ImGui::Selectable("inner1 selectable", false);
if (is_expanded) {
// and so on...
}
}
}
此代码还使小箭头和Selectable
可独立点击的功能很棒。这意味着我可以在单击Selectable
箭头旁边的时候触发事件:
由于以这种方式手动编码时很容易出错,我想我会使用递归来处理创建这些嵌套元素。你会怎么做?