2013-07-08 105 views
0

我知道我可以用下面的方式公開QStringList到QtScript,但是我怎麼能公開一個QVariantHash?如何將QVariantHash變量暴露給QtScript?

QStringList l; 
l<<"2"; 
QScriptValue v = qScriptValueFromSequence(&engine, l); 
engine.globalObject().setProperty("v", v); 

回答

0

對於標準容器qScriptValueFromSequence()運行良好。對於其他類型,您可能需要創建自己的轉換函數,請看qScriptRegisterMetaType()

+0

剛剛籤Qt的助手。看起來像它可以自動轉換QVariantMap類型?但你知道嗎?相信QVariantMap可以達到與QVariantHash相同的目的。如果支持自動轉換,它會很好。 – zhongzhu

0

你可以使用engine.toStriptValue()暴露QVariantMap到QtScript

QVariantMap map; 
map["a"] = 3; 
map["b"] = 4; 

QScriptValue v = engine.toScriptValue(map); 
engine.globalObject().setProperty("m", v); 

engine.evaluate("var h = new Haha()"); 
qDebug()<<engine.evaluate("h.add(m)").toString();