如何正确清除QML菜单

时间:2019-02-26 05:56:10

标签: qt qml qtquick2

我有一个动态创建的菜单。下面的代码只是为了了解层次结构

Menu {
    id: mainMenu
    MenuItem {
       text: "item"
    }
    Menu {
       title: "submenu"
       MenuItem {
           text: "submenuitem"
        }
    }   
}

现在我需要删除所有mainMenu的内容。正如我在文档中所看到的,Menu具有方法removeItemtakeItemtakeMenu。使用takeMenucount属性,我可以访问菜单的子项并递归地删除它们。但是,如果我不知道菜单项的顺序和类型怎么办? Item没有属性count。我需要一些通用的解决方案,可以删除项目本身,如果是菜单,则删除其所有子项。

1 个答案:

答案 0 :(得分:1)

我不知道这是否是最干净的解决方案,但是它可以很好地清除您的示例。

while(mainMenu.items.length > 0)
    mainMenu.removeItem(mainMenu.items[0]);

您无需递归进行操作,因为当您删除 Item 时,所有childItems都将随之删除。