QAxScript 类

QAxScript 类提供对脚本代码的封装。 更多...

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

公共类型

枚举FunctionFlags { FunctionNames, FunctionSignatures }

公共函数

QAxScript(const QString &name, QAxScriptManager *manager)
virtual~QAxScript() override
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 = FunctionNames) const
boolload(const QString &code, const QString &language = QString())
QStringscriptCode() const
QAxScriptEngine *scriptEngine() const
QStringscriptName() const

信号

voidentered()
voiderror(int code, const QString &description, int sourcePosition, const QString &sourceText)
voidfinished()
voidfinished(const QVariant &result)
voidfinished(int code, const QString &source, const QString &description, const QString &help)
voidstateChanged(int state)

详细说明

QAxScript 类的每个实例都代表特定脚本语言中的一段脚本代码。代码通过 load() 加载到脚本引擎中。代码中声明的函数可以通过 call() 来调用。

脚本通过 scriptEngine() 提供的信号向应用反馈。最重要的信号是 error() 信号。通过 scriptEngine() 函数提供对 QAxScriptEngine 的直接访问。

警告:此类不支持 bcc5.5 编译器。

也请参阅 QAxScriptEngineQAxScriptManagerQAxBase以及ActiveQt 框架

成员类型文档

enum QAxScript::FunctionFlags

此FunctionFlags枚举描述了函数内省的格式。

常量描述
QAxScript::FunctionNames0仅返回函数名称。
QAxScript::FunctionSignatures1返回带有签名的函数。

成员函数文档

QAxScript::QAxScript(const QString &name, QAxScriptManager *manager)

构建一个名为name的QAxScript对象,并将其与QAxScriptManager manager注册。这通常由QAxScriptManager类在加载脚本时完成。

脚本应始终有一个名称。一个管理者是必须的,以便脚本代码能够引用应用程序中的对象。《i translate="no">manager`会接管对象的所有权。

[覆盖虚函数 noexcept] QAxScript::~QAxScript()

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

QVariant QAxScript::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,传递参数var1var2var3var4var5var6var7var8作为参数,并返回函数返回的值,或者在函数不返回值或函数调用失败时返回一个无效的QVariant

有关如何调用脚本函数的更多信息,请参阅QAxScriptManager::call()。

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

这是一个重载函数。

以参数arguments调用function,并返回结果。当脚本执行结束后返回。

有关如何调用脚本函数的更多信息,请参阅QAxScriptManager::call()。

[信号] void QAxScript::entered()

当脚本引擎开始执行代码时,会发出此信号。

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

当脚本执行过程中发生错误时,该信号将被触发。

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

[signal] void QAxScript::finished()

当脚本引擎执行完代码时,会发出此信号。

注意: 在此类中信号 finished 是重载的。为了通过函数指针语法连接到该信号,Qt 提供了一个方便的辅助函数,如下例所示。

connect(axScript, QOverload<>::of(&QAxScript::finished),
    [=](){ /* ... */ });

[signal] void QAxScript::finished(const QVariant &result)

这是一个重载函数。

result 包含脚本的返回值。如果脚本没有返回值,这将是一个无效的 QVariant

注意: 在此类中信号 finished 是重载的。为了通过函数指针语法连接到该信号,Qt 提供了一个方便的辅助函数,如下例所示。

connect(axScript, QOverload<const QVariant &>::of(&QAxScript::finished),
    [=](const QVariant &result){ /* ... */ });

[signal] void QAxScript::finished(int code, const QString &source, const QString &description, const QString &help)

这是一个重载函数。

codesourcedescriptionhelp 包含了脚本终止时的异常信息。

注意: 在此类中信号 finished 是重载的。为了通过函数指针语法连接到该信号,Qt 提供了一个方便的辅助函数,如下例所示。

connect(axScript, QOverload<int, const QString &, const QString &, const QString &>::of(&QAxScript::finished),
    [=](int code, const QString &source, const QString &description, const QString &help){ /* ... */ });

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

如果相应的脚本引擎支持内省,则返回此脚本中所有函数的列表;否则返回空列表。根据 flags 的值,函数可以是带有完整原型或仅名称。

另请参阅QAxScriptEngine::hasIntrospection

bool QAxScript::load(const QString &code, const QString &language = QString())

将语言为 language 的脚本 code加载到脚本引擎。如果 code 被成功输入到脚本引擎中,则返回 true;否则返回 false。

如果 language 为空(默认值),则将启发式地确定。如果 code 包含字符串 End Sub,则解释为 VBScript,否则解释为 JScript。可以使用 QAxScriptManager::registerEngine() 注册其他脚本语言。

此函数只能为每个 QAxScript 对象调用一次,使用 QAxScriptManager::load() 时会自动完成。

QString QAxScript::scriptCode() const

返回脚本的代码,如果尚未加载代码,则返回空字符串。

另请参阅load

QAxScriptEngine *QAxScript::scriptEngine() const

返回指向脚本引擎的指针。

可以使用返回的对象将信号连接到脚本函数,或者直接访问脚本引擎。

QString QAxScript::scriptName() const

返回脚本的名称。

[信号] void QAxScript::stateChanged(int 状态)

当脚本引擎改变状态时,会发出此信号。状态可以是 QAxScriptEngine::State 枚举中的任何值。

© 2024 Qt 公司 Ltd. 本文档中包含的贡献的文档版权属于其各自的所有者。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权。Qt 及相关标志是芬兰及/或全球其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。