Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从qml访问持有QVariantMap的QScript Value中的任何内容? 我想把JavaScript函数从QML传递给C++代码,后来调用它,但是用QScript值保存QValangPad,它不想从JavaScript访问。我做的每件事都是正确的吗?我能做我想做的事吗?Im使用QtQuick1.1和Qt 5.5.0 我有C++类的方法:< /P> void SomeClass::setQmlCallback(const QScriptValue &fn) { QScriptValue scriptFn = fn; QScriptValueList args; QVariantMap m; m.insert(QStringLiteral("a"), 96); m.insert(QStringLiteral("b"), 97); args << scriptFn.engine()->newVariant(m); // To pass VariantMap to qml I wrap it in ScriptValue scriptFn.call(scriptFn, args); }_Javascript_C++_Qt_Qml - Fatal编程技术网

是否可以从qml访问持有QVariantMap的QScript Value中的任何内容? 我想把JavaScript函数从QML传递给C++代码,后来调用它,但是用QScript值保存QValangPad,它不想从JavaScript访问。我做的每件事都是正确的吗?我能做我想做的事吗?Im使用QtQuick1.1和Qt 5.5.0 我有C++类的方法:< /P> void SomeClass::setQmlCallback(const QScriptValue &fn) { QScriptValue scriptFn = fn; QScriptValueList args; QVariantMap m; m.insert(QStringLiteral("a"), 96); m.insert(QStringLiteral("b"), 97); args << scriptFn.engine()->newVariant(m); // To pass VariantMap to qml I wrap it in ScriptValue scriptFn.call(scriptFn, args); }

是否可以从qml访问持有QVariantMap的QScript Value中的任何内容? 我想把JavaScript函数从QML传递给C++代码,后来调用它,但是用QScript值保存QValangPad,它不想从JavaScript访问。我做的每件事都是正确的吗?我能做我想做的事吗?Im使用QtQuick1.1和Qt 5.5.0 我有C++类的方法:< /P> void SomeClass::setQmlCallback(const QScriptValue &fn) { QScriptValue scriptFn = fn; QScriptValueList args; QVariantMap m; m.insert(QStringLiteral("a"), 96); m.insert(QStringLiteral("b"), 97); args << scriptFn.engine()->newVariant(m); // To pass VariantMap to qml I wrap it in ScriptValue scriptFn.call(scriptFn, args); },javascript,c++,qt,qml,Javascript,C++,Qt,Qml,Hack将ScriptValue显式转换为变量: QVariant SomeClass::convertToVariant(const QVariant &v) { return v; } 另外,如果我将传递QString而不是QVariantMap,那么一切都将正常运行我不知道为什么,但是将QScriptEngine::newVariant更改为QScriptEngine::toScriptValue解决了这个问题,这样我就可以无需任何破解就可以将传递的QVarian

Hack将ScriptValue显式转换为变量:

QVariant SomeClass::convertToVariant(const QVariant &v)
{
        return v;
}

另外,如果我将传递QString而不是QVariantMap,那么一切都将正常运行

我不知道为什么,但是将
QScriptEngine::newVariant
更改为
QScriptEngine::toScriptValue
解决了这个问题,这样我就可以无需任何破解就可以将传递的QVariantMap作为js对象访问

QVariant SomeClass::convertToVariant(const QVariant &v)
{
        return v;
}