2017-08-29 14 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 
} 

需求測試,看看它是否確實。