QML - 用模型项填充菜单

pou*_*our 3 qt qml qtquickcontrols

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

这是我的菜单项:

import QtQuick.Controls 1.3

ListModel{
    id:menuItems
    ListElement{
        text:"hello1"
    }
    ListElement{
        text:"hello2"
    }
    ListElement{
        text:"hello3"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的菜单

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

}
Run Code Online (Sandbox Code Playgroud)

我什至尝试添加一个Instantiator但菜单不会显示任何内容

pou*_*our 6

查看文档后,我弄清楚了如何实现这一目标:

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)
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 请将以下信息添加到您的问题中(作为导入和标签) - 您的 QtQuick.Controls 使用哪个版本?是“QtQuick.Controls 1.x”(标签:“qtquickcontrols”)还是“QtQuick.Controls 2.x”(标签:qtquickcontrols2) (3认同)