如何注册枚举类型到QJSEngine,以便在脚本环境中使用?
How to register an enum type to QJSEngine to be used from the scripting environment?
我已经连续搜索了几个小时,但我无法弄清楚如何从C++端注册枚举类型,以便在使用 QJSEngine 时可以从脚本环境端使用它?
我有一个派生自 QObject 的类,已注册到脚本环境,并具有一个将枚举作为参数的函数。我希望能够从脚本环境调用该函数。
class ScriptWrapper : public QObject
{
Q_OBJECT
public:
ScriptWrapper(QJSEngine& engine)
{
QJSValue scriptVal = engine.newQObject(this);
engine.globalObject().setProperty("someClass", scriptVal);
}
enum class Foo
{
Bar,
Kek
};
// Q_ENUM(Foo)
Q_INVOKABLE void set(Foo foo);
};
在使用 QJSEngine 时,我需要做什么才能从脚本端调用 set((?我已经尝试了注释掉Q_ENUM呼叫,但它似乎没有帮助。
将Q_ENUM
放回原位并将其添加到构造函数中:
QJSValue meta = engine.newQMetaObject(&ScriptWrapper::staticMetaObject);
engine.globalObject().setProperty("ScriptWrapper", meta);
现在你可以使用枚举,例如
engine.evaluate("someClass.set(ScriptWrapper.Kek)");
相关文章:
- 如何通过cpp程序运行shell脚本
- 枚举环境变量的惯用C++14/C++17方法
- 在程序中编写脚本来编写和编译代码
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在c++中使用system()来运行包含空格的python脚本
- 在cygwin中运行c++脚本时发生错误
- 如何将真正的字符串从python c-api转换为python脚本
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 在原子中使用犰狳与脚本
- 创建一个包含 c++ 默认值的环境文件
- 定义C++新的环境变量并在 bat 文件中使用它
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- 用于在并发环境中访问 MMIO 的软件模式
- 如何注册枚举类型到QJSEngine,以便在脚本环境中使用?
- C++cgi脚本获取空的环境变量作为表单的操作
- 将环境变量传递给已启动的进程bash脚本
- 嵌入式脚本语言与C/ c++ API多线程环境
- python脚本能知道C++主函数在Android环境中的返回值吗
- 如何将两个Makefile(每个生成的脚本都设置了特定的环境变量)合并到一个Makefile中