gpt4 book ai didi

javascript - Qt:如何从 qscriptengine 传递数组或字典?

转载 作者:行者123 更新时间:2023-11-28 05:26:32 26 4
gpt4 key购买 nike

我创建了一个 QScriptEngine 并公开了一个我可以从 js 脚本调用的对象函数。

engine->globalObject().setProperty("obj", myObj);

myObj 是一个 QObject,它具有类似...的功能

void MyObject::doSomething(int w, int h) {
...
}

在我的 js 代码中,我可以这样调用它......

obj.doSomething(5, 9);

这按我预期的那样工作,但我找不到任何关于将数组或字典传递给这些函数的文档。例如,如果我想传递一个数组,我将如何定义 C++ 函数以便我可以做这样的事情...

obj.doSomething([1,2,3], "foo");

会不会像...

void MyObject::doSomething(QVector<QVariant> firstArg, QString secondArg);

很难解决,因为当它不起作用时,调用似乎无声地失败了。

最佳答案

对于数组你有两个选择

  1. 向脚本引擎注册 C++ 序列容器,参见 qScriptRegisterSequenceMetaType()。该函数的文档有一个 int vector 的示例。

  2. 使用QScriptValue 作为函数的参数。然后可以检查传递的对象是否为数组 (QScriptValue::isArray()) 并使用 QScriptValue::property()

    通过索引访问/li>

选项 (2) 也适用于字典(JavaScript 中的对象)。

关于javascript - Qt:如何从 qscriptengine 传递数组或字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com