【发布时间】:2015-05-27 11:37:55
【问题描述】:
我正在寻找一种可以集成到我的 Qt5 应用程序中的脚本语言。该应用程序有一个公共 api,可用于通过插件扩展应用程序。现在我想向应用程序添加一种脚本语言,它提供对整个公共 api 的访问。 脚本语言必须满足以下要求:
- 脚本代码可以在 QT 应用程序中执行。
- 用户可以访问文件系统、网络并使用脚本语言创建图形元素。
- 用户可以通过绑定访问我的QT应用的公共api。
- 应该有一个生成器可以为我的公共 api 自动生成脚本语言绑定。
- 对于属于公共 Api 的类,应该可以在 QT 应用程序和脚本引擎之间传递对象。
我评估了以下脚本语言:
-
Qt-Script,连同 QT-Script Generator。
脚本语言基于 ECMAScript/Javascript,可以轻松集成到 QT 应用程序中。这满足了我的所有要求并按预期工作。生成器可用于为 QT-Api 本身生成绑定,并为我的应用程序的公共 api 生成绑定。遗憾的是,qt-script 模块将在 qt5.5 中弃用,并且脚本生成器不再维护。 -
Python
似乎有几个可用的 python-qt 绑定。
Pyside 可能没问题,但它似乎也inactive。除此之外,我必须将 python 嵌入到 c++ 中,pyside 不支持开箱即用,但可以通过 python c api 完成。
您建议使用哪些脚本语言和工具来满足我的所有要求?
【问题讨论】:
-
QJSEngine 和其他 QML 类取代了 Qt-Script 并且应该能够满足您的部分(或全部)要求,即使您的应用程序最初不是基于 QML。
-
@PavelStrakhov 我读到过。但与 qt-script 相比,功能确实有限。我怀疑是否可以修改脚本生成器以生成可比较的结果(使用 qjsengine 而不是 qt-script)。
-
正如 SaZ 所说:QML 目前是 Qt 的 脚本环境。它甚至带有很多与现有 Qt 类的绑定。它还允许您的用户轻松创建新的 UI!
-
QML 不能满足我的所有要求。用户无法开箱即用地访问文件系统和网络。此外,脚本引擎只能使用基于 QObject 的类。