qt - QML - 使用模型项填充菜单

标签 qt qml qtquickcontrols

我正在尝试从 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,但菜单不会显示任何内容

最佳答案

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

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

关于qt - QML - 使用模型项填充菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45652525/

相关文章:

c++ - QT 向另一个 QT 应用程序发送信号?

c++ - 内联函数和 QObject::connect - 预期表达式

qt - 在 Qt Quick 中从 ListView 制作自定义 TableView 的规范方法

qml - 手动更新/重新绘制项目

c++ - QML TreeView 在向模型添加新数据后未在运行时更新

c++ - 如何在Qt中的QTableview中定位我的按钮的行号

qt - 按住Qml MouseArea移动窗口

qt - 如何将 TableViewColumn 列表传播到子 TableView?

python - 如何防止 PyQt 对象从不同线程收集垃圾?