从 c++ 更改 qml 对象的属性的正确方法是在 c++ 中获取该对象,然后调用setProperty()方法。示例:qml:
Rectangle
{
id: container
width: 500; height: 400
Text {
id: txt1
objectName: "text1"
text: "hi"
}
}
请注意,您必须添加用于获取子对象的对象名称属性。在此示例中,矩形是根对象。然后在 C++ 中:
QObject *rootObject = dynamic_cast<QObject*>(viewer.rootObject());
QObject *your_obj = rootObject->findChild<QObject*>("text1");
your_obj->setProperty("text", "500");
您可以将其压缩为一行调用,如下所示:
viewer.rootObject()->findChild<QObject*>("text1")->setProperty("text", "You text");
另一种方法是使用您之前使用的方法,但将对象名称赋予changeText方法并遍历主对象的子对象,直到找到您感兴趣的对象:
Rectangle {
id: container
width: 500; height: 400
Text {
id: txt1
objectName: "text1"
text: "hi"
}
function changeText(objectName,str){
for (var i = 0; i < container.children.length; ++i)
if(container.children[i].objectName === objectName)
{
container.children[i].text = str;
}
}
}