如何正确清除QML Menu
How to clear QML Menu correctly
我有一个动态创建的菜单。下面的代码只是为了理解层级
Menu {
id: mainMenu
MenuItem {
text: "item"
}
Menu {
title: "submenu"
MenuItem {
text: "submenuitem"
}
}
}
现在我需要删除主菜单的所有内容。正如我在文档中看到的那样,Menu 有方法 removeItem
、takeItem
和 takeMenu
。使用 takeMenu
和 count
属性 我可以访问菜单的子项并递归删除它们。但是,如果我不知道菜单项的顺序和类型怎么办? Item
没有 属性 count
。我需要一些可以删除项目本身的通用解决方案,如果它是一个菜单,则删除它的所有子项。
我不知道这是否是最干净的解决方案,但它可以很好地清除您的示例。
while(mainMenu.items.length > 0)
mainMenu.removeItem(mainMenu.items[0]);
您不需要递归地进行,因为当您删除一个 Item 时,它的所有 childItems 都会随之删除。
我有一个动态创建的菜单。下面的代码只是为了理解层级
Menu {
id: mainMenu
MenuItem {
text: "item"
}
Menu {
title: "submenu"
MenuItem {
text: "submenuitem"
}
}
}
现在我需要删除主菜单的所有内容。正如我在文档中看到的那样,Menu 有方法 removeItem
、takeItem
和 takeMenu
。使用 takeMenu
和 count
属性 我可以访问菜单的子项并递归删除它们。但是,如果我不知道菜单项的顺序和类型怎么办? Item
没有 属性 count
。我需要一些可以删除项目本身的通用解决方案,如果它是一个菜单,则删除它的所有子项。
我不知道这是否是最干净的解决方案,但它可以很好地清除您的示例。
while(mainMenu.items.length > 0)
mainMenu.removeItem(mainMenu.items[0]);
您不需要递归地进行,因为当您删除一个 Item 时,它的所有 childItems 都会随之删除。