как открыть переменную QVariantHash для QtScript?

Я знаю, что могу использовать приведенный ниже способ для представления QStringList в QtScript, но как я могу предоставить QVariantHash?

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

person zhongzhu    schedule 08.07.2013    source источник


Ответы (2)


Для стандартных контейнеров qScriptValueFromSequence() работает нормально. Для других типов вам, вероятно, придется создать собственную функцию преобразования, взгляните на qScriptRegisterMetaType().

person Sebastian Lange    schedule 08.07.2013
comment
только что проверил Qt Assistant. похоже, он может автоматически преобразовывать тип QVariantMap? Но знаете ли вы, как. Поверьте, QVariantMap будет служить той же цели, что и QVariantHash. было бы здорово, если бы автоконвертирование поддерживалось. - person zhongzhu; 10.07.2013

вы можете использовать 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();
person zhongzhu    schedule 10.07.2013