gpt4 book ai didi

c++ - 从 C++ 访问 ListElement (QML) 颜色

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:42 35 4
gpt4 key购买 nike

我尝试访问 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/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com