首页 文章

QML - 带有模型项的填充菜单

提问于
浏览
0

我试图从 ListModel 动态填充 Menu ,但这种方法赢得了't work (when I right click the menu won' t显示任何东西):

这是我的menuItems:

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 但菜单不会显示任何内容

2 回答

  • 0

    查看文档后,我想出了如何实现这一目标:

    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)
       }
    }
    
  • 0

    您只需将每个ListElement的文本添加到MenuItem,如下所示:

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

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

相关问题