我尝试访问 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"));
关于c++ - 从 C++ 访问 ListElement (QML) 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786803/