1

我正在开发一个运行 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?

4

1 回答 1

4

您可以使用

Qt.createQmlObject()

动态创建对象,然后您可以将它们的属性更改为列表中的属性。有关动态对象创建的更多详细信息,请参阅本文

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

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";
}
于 2012-10-17T13:15:42.557 回答