在我的 Qt 应用程序中,使用 QtScript 的脚本可以访问对话框的所有控件。为此,我使用 QScriptEngine 的 newQObject 方法,例如:
QScriptValue btn = scriptEngine->newQObject(okBtn, QScriptEngine::QtOwnership);
controls.setProperty("okButton", btn, QScriptValue::ReadOnly);
例如,我现在可以在脚本中执行此操作:
dialog.controls.okButton.setEnabled(false);
只要已发布控件 ( okButton ) 的调用方法 ( setEnabled )在对象类中被标记为公共槽,这就可以正常工作。不幸的是,我希望能够从脚本调用的许多方法仅在正常的公共范围内定义。
解决这个问题的一种方法是从每个 Qt UI 元素派生一个新类,将这些方法覆盖为公共插槽。但这意味着编码和维护方面的巨大开销,这在这种情况下是不可取的。
有没有办法告诉脚本引擎默认提供普通的公共功能?