详细说明
通过QScriptable类,可以从Qt C ++成员函数访问Qt脚本环境。
使用QScriptEngine :: newQObject(),您可以将任何QObject(或子类)的信号,插槽和属性公开给脚本代码。 QScriptable通过使您的C ++成员可以访问他们在其中调用的Qt脚本环境来增强此功能。从概念上讲,它类似于QObject :: sender()。
通过子类化QScriptable,您可以在类中获得以下函数:thisObject(),argumentCount(),argument(),context()和engine()。使用这些功能,当从脚本代码中调用类的插槽和属性访问功能时,您可以完全访问Qt Script环境。
例如,您可以从插槽中抛出Qt脚本异常。操作与函数调用关联的“ this”对象;检查存储在QScriptContext中的参数,以了解从脚本代码传递给函数的“真实”参数;并从插槽中调用脚本功能。
QScriptable的典型用例是为自定义C ++类型实现原型对象。您可以使用属性和插槽在QScriptable子类中定义自定义类型的脚本化接口;然后使用QScriptEngine :: newQObject()包装类的实例,最后将结果传递给QScriptEngine :: setDefaultPrototype()。请参阅默认原型示例以了解如何完成此操作。
以下是QScriptable的子类通常的外观:
class MyScriptableObject: public QObject,
protected QScriptable