2017-08-29 15 views
0

所以我有这样的代码:如何遍历isArray()的QScriptValue中的项目?

QScriptValue result(someFunction()); 
if(result.isArray()) { 
{ 
    // Print items in array 
} 

我该怎么办呢?我试图将其转换为QList<QScriptValue>但这不起作用。我认为这样做:

const int length = (int)result.property("length").toNumber(); 
    for (int i = 0; i < length; ++i) { 
     const QSCriptValue entry(result.property(QString::number(i))))); 
     // do something with entry 
    } 

它的作品,但似乎有点丑。

+0

请记住,该模块已被弃用。 – dtech

+0

如果你可以切换到新的'QJSEngine','QJSValue'类有一个属性函数重载,它接受一个数组索引:https://doc.qt.io/qt-5/qjsvalue.html#property-1 – Felix

回答

0

基于QScriptValue的帮助,大概是这样的:

for(v: result.toVariant().as<QVariantList>()) { 
    // here v is a QVariant-item 
} 

需求测试,看看它是否确实。