gpt4 book ai didi

javascript - 如何使 C++ 类可从 Javascript 访问

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:49 24 4
gpt4 key购买 nike

我正在使用 Qt 4.8 和 QScriptEngine。

我想让一个 C++ 类可以从 Javascript 中使用,但我没有得到它。

我已经知道如何公开类的单个对象。

我的类(class)是这样的:

#include <QtCore/QObject>

class Tada: public QObject
{
Q_OBJECT
public:

Tada(int i=0): m_i(i){};

public slots:
int giveNumber();

private:
int m_i;
};

在我设置脚本引擎的位置我可以添加类似

的内容
static Tada tada;
engine->globalObject().setProperty("tada", engine->newQObject(&tada));

这使得对象tada在脚本中可用,所以我可以像使用它一样

tada.giveNumber();

但是如果我想在脚本本身中创建 Tada 对象,例如:

var mt = new Tada(34);
mt.giveNumber();

?

最佳答案

首先创建一个构造函数,如:

QScriptValue constructTada(QScriptContext * context, QScriptEngine * engine)
{
Tada * pTada = new Tada;

if (context->argumentCount() > 0)
{
// Set any properties...
pTada->setNumber(context->argument(0).toInt32());
}

return engine->newQObject(pTada);
}

然后您需要将该函数放入脚本环境中:

QScriptEngine engine;
QScriptValue ctor = engine.newFunction(constructTada);
engine.globalObject().setProperty("Tada", ctor);

关于javascript - 如何使 C++ 类可从 Javascript 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24432873/

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