给出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)
答案 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;
}