动态填充QML菜单

时间:2012-10-17 13:03:45

标签: c++ list menu qml

我正在开发运行HP webOS应用的环境。我需要阅读Mojo.Menu并使用从javascript代码中获取的数据填充QML菜单。

例如来自

            Mojo.Menu.prefsItem,
            {
                { label: $L("High Scores")
            },

我创建了QML对象

MenuItem {
    text: "High scores"
    onClicked: //some stuff
}

列表(QStringList或QList)将由Q_INVOKABLE函数提供。

这可以动态创建这样的MenuItem并将它们推送到MenuLayout吗?

1 个答案:

答案 0 :(得分:3)

您可以使用

Qt.createQmlObject()

动态创建对象,然后您可以将其属性更改为列表中的属性。有关动态对象创建的更多详细信息,请查看this article

要将这些动态创建项添加到布局,请先创建布局:

MenuLayout {
  id: customLayout
}

然后添加动态创建的MenuItem

var menuComponent = Qt.createComponent("MenuItem.qml");
if(menuComponent.status == Component.Ready) {
  var createdMenu = menuComponent.createObject(customLayout);
  createdMenu.text = "Text from your QList";
}