QAxScriptManager 类

The QAxScriptManager class provides a bridge between application objects and script code. 更多...

头: #include <QAxScriptManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
继承: QObject

公共函数

QAxScriptManager (QObject * parent = nullptr)
virtual ~QAxScriptManager () override
void addObject (QAxBase * object )
void addObject (QObject * object )
QVariant call (const QString & function , const QVariant & var1 = QVariant(), const QVariant & var2 = QVariant(), const QVariant & var3 = QVariant(), const QVariant & var4 = QVariant(), const QVariant & var5 = QVariant(), const QVariant & var6 = QVariant(), const QVariant & var7 = QVariant(), const QVariant & var8 = QVariant())
QVariant call (const QString & function , QList<QVariant> & arguments )
QStringList functions (QAxScript::FunctionFlags flags = QAxScript::FunctionNames) const
QAxScript * load (const QString & code , const QString & name , const QString & 语言 )
QAxScript * load (const QString & file , const QString & name )
QAxScript * script (const QString & name ) const
QStringList scriptNames () const

信号

void error (QAxScript * script , int code , const QString & description , int sourcePosition , const QString & sourceText )

静态公共成员

bool registerEngine (const QString & name , const QString & extension , const QString & code = QString())
QString scriptFileFilter ()

详细描述

The QAxScriptManager acts as a bridge between the COM objects embedded in the Qt application through QAxObject or QAxWidget ,及透过 Windows Script 技术可用的脚本语言,通常是 JScript 和 VBScript。

Create one QAxScriptManager for each separate document in your application, and add the COM objects the scripts need to access using addObject ()。然后 load () 脚本源代码并援引函数使用 call ().

警告: 此类不可用于 bcc5.5 编译器。

另请参阅 QAxScript , QAxScriptEngine , QAxBase ,和 ActiveQt 框架 .

成员函数文档编制

[explicit] QAxScriptManager:: QAxScriptManager ( QObject * parent = nullptr)

Creates a QAxScriptManager object. parent 被传递给 QObject 构造函数。

It is usual to create one QAxScriptManager for each document in an application.

[override virtual] QAxScriptManager:: ~QAxScriptManager ()

销毁对象,释放所有分配资源。

void QAxScriptManager:: addObject ( QAxBase * object )

添加 object 到管理器。由此管理器处理的脚本可以访问代码中的对象,使用对象的 objectName 特性。

必须添加所有必要对象,在加载任何脚本之前。

void QAxScriptManager:: addObject ( QObject * object )

这是重载函数。

添加一般 COM (组件对象模型) 包裹器为 object 到管理器。 object 必须被暴露成 COM 对象使用功能提供通过 QAxServer 模块。使用此函数的应用程序必须链接到 qaxserver 库。

QVariant QAxScriptManager:: call (const QString & function , const QVariant & var1 = QVariant(), const QVariant & var2 = QVariant(), const QVariant & var3 = QVariant(), const QVariant & var4 = QVariant(), const QVariant & var5 = QVariant(), const QVariant & var6 = QVariant(), const QVariant & var7 = QVariant(), const QVariant & var8 = QVariant())

调用 function ,传递参数 var1 , var1 , var2 , var3 , var4 , var5 , var6 , var7 and var8 作为自变量并返回由函数返回的值,或无效 QVariant 若函数不返回值 (或当函数调用失败时)。调用返回,当脚本执行完成时。

大多数脚本引擎仅支持的参数类型为 const QVariant &,例如,要调用 JavaScript 函数

function setNumber(number)
{
    n = number;
}
					

使用

QValueList args;
args << 5;
script->call("setNumber(const QVariant&)", args);
					

就像 dynamicCall 参数可以被直接嵌入函数字符串中。

script->call("setNumber(5)");
					

不管怎样,这更慢。

不支持自省由脚本引擎提供的函数不可用,且必须直接被调用使用 QAxScript::call () 在各个 script 对象。

注意,调用此函数会比使用 call() 显著更慢在各个 QAxScript 直接。

QVariant QAxScriptManager:: call (const QString & function , QList < QVariant > & arguments )

这是重载函数。

调用 function 传递 arguments 作为参数,并返回结果。返回当脚本执行完成时。

[signal] void QAxScriptManager:: error ( QAxScript * script , int code , const QString & description , int sourcePosition , const QString & sourceText )

此信号被发射,出现执行错误当运行 script .

code , description , sourcePosition and sourceText 包含执行错误的有关信息。

警告: 不要删除 script 在连接到此信号的槽中。使用 deleteLater () 代替。

QStringList QAxScriptManager:: functions ( QAxScript::FunctionFlags flags = QAxScript::FunctionNames) const

返回具有所有可用函数的列表。不支持自省由脚本引擎提供的函数不在列表中。函数按完整原型提供 (或按名称提供),从属值对于 flags .

QAxScript *QAxScriptManager:: load (const QString & code , const QString & name , const QString & 语言 )

加载脚本源 code 使用脚本引擎对于 language 。稍后可以引用脚本,以使用其 name 不应为空。

函数返回指针指向脚本为给定 codecode 加载成功;否则,返回 0。

language 为空,将启发式确定它。若 code 包含字符串 End Sub 会将它解释成 VBScript,否则解释成 JScript。可以注册其它脚本语言使用 registerEngine ().

必须添加所有必要对象 (使用 addObject ()) before 加载任何脚本。若 code 声明已经可用的函数 (无论按哪种语言),将重载第一个函数且不再可以被调用凭借 call ();但它仍然是可用的通过调用其 script 直接。

另请参阅 addObject (), scriptNames (),和 functions ().

QAxScript *QAxScriptManager:: load (const QString & file , const QString & name )

这是重载函数。

加载源代码从 file 。稍后可以引用脚本,以使用其 name 不应为空。

函数返回的指针指向脚本引擎对于代码在 file if file 加载成功;否则,返回 0。

所用脚本引擎由文件扩展名确定。默认情况下,.js 文件被解释成 JScript 文件,而 .vbs 和 .dsm 文件被解释成 VBScript。可以注册其它脚本引擎使用 registerEngine ().

[static] bool QAxScriptManager:: registerEngine (const QString & name , const QString & extension , const QString & code = QString())

注册脚本引擎称为 name 并返回 true 若找到引擎;否则什么都不做并返回 false。

将使用脚本引擎,当加载文件具有给定 extension ,或当加载的源代码包含字符串 code .

QAxScript *QAxScriptManager:: script (const QString & name ) const

返回脚本称为 name .

可以使用返回指针以直接调用函数透过 QAxScript::call (),以直接访问脚本引擎,或删除并因此卸载脚本。

[static] QString QAxScriptManager:: scriptFileFilter ()

返回列出所有支持脚本语言的文件过滤器。此过滤器字符串是方便的为用于 QFileDialog .

QStringList QAxScriptManager:: scriptNames () const

返回具有所有脚本名称的列表。