将脚本语言嵌入C++ 程序已经变得非常普遍。在许多主流的应用程序,如Microsoft Office 与Macromedia Director 中, 都有一种上升的趋势,即提供小巧的,脚本给用户以提供一些更加专用的功能。
过去的几年,对于Qt 程序嵌入脚本只有两种主流的解决方案:由奇趣提供的 QSA (JavaScript 2.0) 和由Riverbank Computing 提供的PyQt (Python) 。在Qt Quarterly 的Scripting Qt 文章中已经给出了一个很好的关于QSA , PyQt 和其它解决方案。
自那篇文章写完之后,还有许多方案正在开发中,到目前为止,还有两种方案值得参考:
QtScript, 一个自 Qt4.3 后的基于 ECMAScript 的解析器
PythonQt, MeVisLab 正在使用 , 属于一个动态地 Python 解析器。
QtScript 与 PythonQt 出现使得在Qt 程序中嵌入脚本变得容易,这篇文章将集中描述PythonQt
脚本的好处
将一个C++ 程序脚本化有如下一些好处:
一个设计得好的应用程序可以为初级跟专家级用户提供易于控制的能力。
在不需要具有非常深厚的 C++ 背景下,应用程序都可以很容易地扩展 .
脚本便于创建宏和批处理
自动化测试变得可能
脚本可跨平台,若应用程序可以运行于某个平台,脚本同样可以运行。
脚本可以使原型化的阶段更快实现,比如 , 你的支持团队可以通过脚本来增加特性,这比使用 C++ 开发并重新布暑更方便。
脚本的API 具有多种形式:可以是一个对于能用任务的批处理,也可以是一个可以供用户定制及扩展菜单及对话框的功能更全的版本,甚至是可以访问程序的可以说功能(如,网络浏览器中的JavaScript ).
当针对Qt 程序增加脚本时,以下几点被认为是有益的:
易于集成进 Qt 程序中
基于大家都知道的脚本语言,以降低学习一门新语言的门槛。
与 Qt 框架的良好集成 , 如,它应该知道 signals,slots 和 properties.
支持脚本语言与 Qt 之间的类型转换及处理,理想情况下,最好支持所有的 QVariant 类型
支持调试 , 当脚本程序变大时,调试功能也变得重要。
关于PythonQt
与 PyQt 和Qt Jambi 不同, PythonQt 不是作为编写独立的应用程序的支撑组件,而是提供嵌入python 解析器的能力,并且可以很容易地将应用程序的部分功能导出到Python 中。
PythonQt 扩展了Qt 4 meta-object 系统的功能。因此,PythonQt 能够在不知道任何QO