【发布时间】:2018-04-04 19:04:17
【问题描述】:
由于QJSValue、QJsonObject 上的 qt 文档不能隐式转换为 QJSValue,我想从 C++ 中调用带有 QJSEngine 的 javascript 函数,应使用 QList<QJsValue> 传递参数以调用函数另一个拥有函数本身的QJSValue。
问题是我的论点之一是QJsonObject,直到现在我应该将其转换为文本,然后调用并将其传递给调用JSON.parse 以将其转换为对象的javascript函数,我正在寻找一个解决方案,让我在 C++ 中将 QJsonObject 转换为 QJSValue 并使用对象参数而不是 json 文本调用 javascript 函数。
目前代码如下所示
QJsonObject obj;
obj["1"] = QString("A");
obj["2"] = QString("B");
QJSValue func = myEngine.evaluate("(function(arg) { var obj = JSON.parse(arg); var res = obj[\"1\"] + obj[\"2\"]; return res; })");
QJSValueList args;
args << QString(QJsonDocument(obj).toJson());
QJSValue res = func.call(args);
我想要一个像 QJSValue ConvertToQJSValue(QJsonObject object) 这样的函数:
QJsonObject obj;
obj["1"] = QString("A");
obj["2"] = QString("B");
QJSValue func = myEngine.evaluate("(function(arg) { var res = arg[\"1\"] + arg[\"2\"]; return res; })");
QJSValueList args;
args << ConvertToQJSValue(obj);
QJSValue res = func.call(args);
【问题讨论】:
标签: javascript c++ qt qjsengine