2013-07-08 108 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();