QML - 使用模型项填充菜单

QML - Filling menu with model items

我正在尝试从 ListModel 动态填充 Menu,但这种方法不起作用(当我右键单击菜单时不会显示任何内容):

这是我的菜单项:

import QtQuick.Controls 1.3

ListModel{
    id:menuItems
    ListElement{
        text:"hello1"
    }
    ListElement{
        text:"hello2"
    }
    ListElement{
        text:"hello3"
    }
}

这是我的菜单

Menu{
    id:contextMenu
    Repeater{
    model: menuItems
    MenuItem{}

}

我什至试着放一个 Instantiator 但菜单什么也没有显示

您只需像这样将每个 ListElement 的文本添加到您的 MenuItem 中:

Menu{
    id:contextMenu
    visible: true
    Repeater {
        model: menuItems
        MenuItem {
            text: modelData
        }
    }
}

我还在你的菜单中添加了“visible: true”来显示它(我不知道你是否在其他地方打开它)。

在查看文档后,我找到了实现该目标的方法:

Menu {
    id: contextMenu

    Instantiator {
       model: menuItems
       MenuItem {
          text: model.text
       }

       // The trick is on those two lines
       onObjectAdded: contextMenu.insertItem(index, object)
       onObjectRemoved: contextMenu.removeItem(object)
   }
}