qt - 如何正确清除QML菜单

标签 qt qml qtquick2

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

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

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

最佳答案

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

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

您不需要递归,因为当您删除Item时,它的所有 childItems一起被删除。

关于qt - 如何正确清除QML菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54879226/

相关文章:

android - QML - 通过点击事件显示菜单栏或菜单项

javascript - QML 文件中是否支持 Lambda?

javascript - QML:如何在自定义组件中触发onChanged?

qt - qDebug()<<qstring 不再编译

c++ - 如何在qt中获取QModelIndexList中的值?

c++ - QtQuick 双屏支持

c++ - 从另一个类调用 QQmlApplicationEngine 时的 TableView 和 QAbstracTableModel

javascript - 无法在 QML 中创建 map 数据类型吗?

qt - 如何为 arm-linux-generic-elf-32 创建 QT 版本

qml - 如何仅旋转图像的右侧或左侧部分