如何在 C++ 的 QML 对象上设置 QJSValue 类型的 属性?

How do I set a property of type QJSValue on a QML object from C++?

我有一个 QQuickItem 对应于一个 MapPolyline 对象。多段线有一个名为 path 的 属性,它在文档中定义为 list<coordinate> 类型。 coordinate 是一种映射到 C++ 世界中的 QGeoCoordinate 的类型。我正在尝试弄清楚如何从 C++ 中设置此 属性 的值。

如果我检查项目的 QMetaObject 并查找它为 path 属性 报告的类型,它表明类型为 QJSValue。我不清楚如何使用 QObject::setProperty()QQmlProperty::write() 从 C++ 设置此值。我试过以下方法:

这个过程似乎没有很好的记录。我需要将数据放入什么格式才能使这项工作正常进行?

事实证明,文档中未提及的第三种方法似乎确实有效。我需要像这样设置 属性:

QJSValue arr; // see above for how to initialize `arr`
item->setProperty("path", QVariant::fromValue(arr));