Я работаю над средой для запуска приложений HP webOS. Мне нужно прочитать Mojo.Menu и заполнить меню QML данными, взятыми из кода javascript.
Например из
Mojo.Menu.prefsItem,
{
{ label: $L("High Scores")
},
Я бы создал объект QML
MenuItem {
text: "High scores"onClicked: //some stuff
}
Список (QStringList или QList) будет предоставлен функцией Q_INVOKABLE.
Можно ли динамически создавать такие элементы MenuItem и передавать их в MenuLayout?
Ты можешь использовать
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";
}
Других решений пока нет …