Как правильно очистить QML Menu - PullRequest
0 голосов
/ 26 февраля 2019

У меня динамически созданное меню.Приведенный ниже код просто для понимания иерархии

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

Теперь мне нужно удалить весь контент mainMenu.Как я вижу в документации, в Menu есть методы removeItem, takeItem и takeMenu.Используя свойства takeMenu и count, я могу получить доступ к дочерним элементам меню и рекурсивно удалить их.Но что, если я не знаю порядок и тип пунктов меню?Item не имеет свойства count.Мне нужно какое-то универсальное решение, которое может удалить сам элемент, а если это меню, то удалить все его дочерние элементы.

1 Ответ

0 голосов
/ 26 февраля 2019

Я не знаю, является ли это самым чистым решением, но оно хорошо работает, чтобы очистить ваш пример.

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

Вам не нужно идти рекурсивно, потому что при удалении Item , все его childItems удаляются вместе с ним.

...