C++ 如何为Qt应用程序提供脚本支持?
我正在寻找一种脚本语言,它可以集成到我的Qt5应用程序中。该应用程序有一个公共api,可用于使用插件扩展应用程序。现在我想向应用程序添加一种脚本语言,它提供对整个公共api的访问。 脚本语言必须满足以下要求:C++ 如何为Qt应用程序提供脚本支持?,c++,qt,scripting,C++,Qt,Scripting,我正在寻找一种脚本语言,它可以集成到我的Qt5应用程序中。该应用程序有一个公共api,可用于使用插件扩展应用程序。现在我想向应用程序添加一种脚本语言,它提供对整个公共api的访问。 脚本语言必须满足以下要求: 脚本代码可以在QT应用程序中执行 用户可以通过脚本语言访问文件系统、网络和创建图形元素 用户可以通过绑定访问我的QT应用程序的公共api 应该有一个生成器可以为我的公共api自动生成脚本语言绑定 对于作为公共Api一部分的类,应该可以在QT应用程序和脚本引擎之间传递对象 我评估了以下脚
- 脚本代码可以在QT应用程序中执行
- 用户可以通过脚本语言访问文件系统、网络和创建图形元素
- 用户可以通过绑定访问我的QT应用程序的公共api
- 应该有一个生成器可以为我的公共api自动生成脚本语言绑定
- 对于作为公共Api一部分的类,应该可以在QT应用程序和脚本引擎之间传递对象
- Qt脚本,以及Qt脚本生成器。
脚本语言基于ECMAScript/Javascript,可以轻松集成到QT应用程序中。这满足了我的所有要求,并按预期工作。生成器可用于为QtaPI本身生成绑定,并为我的应用程序的公共Api生成绑定。遗憾的是,qt脚本模块将被弃用于qt5.5,而scriptgenerator将不再维护 - Python
似乎有几种python qt绑定可用。
Pyside可能还可以,但它似乎也处于非活动状态。除此之外,我必须将Python嵌入C++中,它不被PySeNox所支持,但是可以由Python C API来完成。
- 用户可以通过绑定访问我的QT应用程序的公共api
- 应该有一个生成器可以为我的公共api自动生成脚本语言绑定
这是使用Sigg提供的C++函数:
- SigigyType查询获取有关C++类型 的信息
- SigigNeNoPotoObjoc将C++对象转换为Python(代理)对象< /LI>
- SigigUnCurruttPtR将Python(代理)对象转换回C++对象
QJSEngine和其他QML类中的更多信息将取代Qt脚本,即使应用程序最初不是基于QML,也应该能够满足部分(或全部)需求。@PavelStrakhov我读过这方面的内容。但与qt脚本相比,该功能确实有限。我怀疑scriptgenerator是否可以修改以生成类似的结果(使用qjsengine而不是qt脚本)。它甚至附带了许多到现有Qt类的绑定。它允许您的用户轻松创建新的UI!QML不能满足我的所有要求。用户无法直接访问文件系统和网络。此外,脚本引擎只能使用基于QObject的类。