Я пытаюсь получить доступ к свойствам ListElement (QML): color;
ListModel {
id:myListModel
ListElement {name:"one" ;color:"red";objectName:"first"}
ListElement(name:"two";color:"green"}
}
в C ++ я должен использовать:
QObject* o=ui->declarativeView->rootObject()->findChild<QObject*>("first");
o->setProperty("color","blue");
Но я не могу получить доступ к этим свойствам.
Пожалуйста помоги.
ListModel
не анализируется как типичный QML, а использует собственный анализатор для обработки объявлений ListElement. Это позволяет модели избежать создания дорогих объектов для каждого элемента данных. ListModel
имеет ряд функций, доступных для манипулирования данными модели через QML. Вы можете добавить свои собственные функции в модель в QML, к которым вы можете получить доступ из C ++, например,
ListModel {
id:myListModel
objectName: "model"function setColor(index, color) {
myListModel.setProperty(index, "color", color)
}
ListElement {name:"one";color:"red"}
ListElement {name:"two";color:"green"}
}
и в C ++:
QObject* o=ui->declarativeView->rootObject()->findChild<QObject*>("model");
QMetaObject::invokeMethod(o, "setColor", Q_ARG(QVariant, 0), Q_ARG(QVariant, "yellow"));
Других решений пока нет …