Свойства — Доступ из C ++ в ListElement (QML) цвет

Я пытаюсь получить доступ к свойствам 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");

Но я не могу получить доступ к этим свойствам.
Пожалуйста помоги.

4

Решение

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"));
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]