qmlオブジェクトのプロパティをc++から変更する正しい方法は、そのオブジェクトをc ++で取得し、setProperty()メソッドを呼び出すことです。例:qml:
Rectangle
{
id: container
width: 500; height: 400
Text {
id: txt1
objectName: "text1"
text: "hi"
}
}
子を取得するために使用されるオブジェクト名プロパティを追加する必要があることに注意してください。この例では、RectangleはrootObjectです。次に、C ++では:
QObject *rootObject = dynamic_cast<QObject*>(viewer.rootObject());
QObject *your_obj = rootObject->findChild<QObject*>("text1");
your_obj->setProperty("text", "500");
これを次のように1行の呼び出しに圧縮できます。
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;
}
}
}