从C ++读取QML数组属性

时间:2019-03-11 17:40:11

标签: c++ qml

给出QML,例如:

Item {
  objectName: "myitem"
  property var myarr: [1,2,3]
}

如何从C ++读取?

以下内容无效:

QObject* item = root->findChild<QObject*>("myitem");
QVariant value = item->property("myarr");

如果我查询value.isValid(),而QMetaType::typeName( QMetaType::Type(int(value.type())) )返回true 它会产生“ QWidget *”。

(在x86上使用Qt 5.9.4)

1 个答案:

答案 0 :(得分:1)

这将返回QVariant列表,因为它是最通用的类​​型,在下一个示例中,我将其解压缩并将其存储在容器中:

if(QObject *item = root->findChild<QObject *>("myitem")){
    std::vector<int> vector; // another option std::vector<float>;
    for(const QVariant & v: item->property("myarr").toList()){
       vector.push_back(v.toInt()); // another option toFloat();
    }
    qDebug() << vector;
}