QAxScriptManager 类

QAxScriptManager 类提供了应用程序对象和脚本代码之间的桥梁。 更多信息...

头文件 #include <QAxScriptManager>
CMakefind_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmakeQT += axcontainer
继承自 QObject

公共函数

QAxScriptManager(QObject *parent = nullptr)
virtual~QAxScriptManager() override
voidaddObject(QAxBase *object)
voidaddObject(QObject *object)
QVariantcall(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())
QVariantcall(const QString &function, QList<QVariant> &arguments)
QStringListfunctions(QAxScript::FunctionFlags flags = QAxScript::FunctionNames) const
QAxScript *load(const QString &code, const QString &name, const QString &language)
QAxScript *load(const QString &file, const QString &name)
QAxScript *script(const QString &name) const
QStringListscriptNames() const

信号

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

静态公共成员

boolregisterEngine(const QString &name, const QString &extension, const QString &code = QString())
QStringscriptFileFilter()

详细描述

QAxScriptManager 作用是作为通过 QAxObject 或 QAxWidget 嵌入 Qt 应用程序中的 COM 对象与通过 Windows Script 技术提供的脚本语言(通常为 JScript 和 VBScript)之间的桥梁。

为您的应用程序中的每个单独文档创建一个 QAxScriptManager,并使用 addObject() 添加脚本需要访问的 COM 对象。然后调用 load() 脚本源,并使用 call() 调用函数。

警告: 该类在 bcc5.5 编译器中不可用。

另请参阅 QAxScriptQAxScriptEngineQAxBase 以及 ActiveQt 框架

成员函数文档

[显式构造函数] QAxScriptManager::QAxScriptManager(QObject *parent = nullptr)

创建一个 QAxScriptManager 对象。将 parent 传递给 QObject 构造函数。

通常在一个应用的每个文档中创建一个 QAxScriptManager。

[重写虚函数 noexcept] QAxScriptManager::~QAxScriptManager()

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

void QAxScriptManager::addObject(QAxBase *object)

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

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

void QAxScriptManager::addObject(QObject *object)

这是一个重载函数。

object 的通用 COM 包装器添加到管理器中。object 必须使用 QAxServer 模块提供的功能作为一个 COM 对象公开。使用此函数的应用必须链接到 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,将参数 var1var1var2var3var4var5var6var7var8 作为参数传递,并返回函数返回的值,如果没有返回值或函数调用失败,则返回一个无效的 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 对象上直接调用。

请注意,调用此函数可能比直接在相应的 QAxScript 上使用 call() 快得多。

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

这是一个重载函数。

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

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

在执行 script 期间发生执行错误时发出此信号。

codedescriptionsourcePositionsourceText 包含关于执行错误的信息。

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

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

返回一个包含所有可用函数的列表。不包含不支持反射的脚本引擎提供的函数。功能要么带有完整的原型,要么仅作为名称提供,具体取决于 flags 的值。

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

使用 language 的脚本引擎加载 code 脚本源。脚本可稍后通过其 name(不应为空)引用。

如果 code 装载成功,则函数返回给定 code 的脚本的指针;否则返回 0。

如果 language 为空,它将启发式地确定。如果 code 包含字符串 "End Sub",则将其解释为 VBScript,否则为 JScript。可以使用 registerEngine() 注册额外的脚本引擎。

必须在加载任何脚本之前(使用 addObject())添加所有必要的对象。如果 code 声明了一个已经可用的(无论在何种语言中)函数,第一个函数将被重载,并且不能通过 call() 调用;但仍然可以通过直接调用其 script 而获得。

另请参阅:addObject()、scriptNames() 和 functions()。

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

这是一个重载函数。

从文件中加载源代码。可以使用其名称引用脚本,名称不应为空。

如果文件加载成功,则函数返回文件中的代码对应的脚本引擎指针;否则返回0。

根据文件的扩展名确定使用的脚本引擎。默认情况下,".js"文件被视为JScript文件,而".vbs"和".dsm"文件被视为VBScript。可以使用registerEngine()()注册其他脚本引擎。

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

注册名为name的脚本引擎,如果找到引擎则返回true;否则不执行任何操作并返回false。

当以指定的扩展名加载文件,或者加载包含字符串code的源代码时,将使用脚本引擎。

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

返回名为name的脚本。

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

[静态] QString QAxScriptManager::scriptFileFilter()

返回一个列出了所有支持的脚本语言的文件过滤器。此过滤器字符串便于与QFileDialog一起使用。

QStringList QAxScriptManager::scriptNames() const

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

© 2024 The Qt Company Ltd. 包含在此处的文档贡献是各自所有者的版权。提供的文档受GNU免费文档许可协议版本1.3的条款约束,由自由软件基金会发布。Qt及其相关徽标是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为各自所有者的财产。