本页内容

QAxScript Class

QAxScript 类提供了一个脚本代码的封装。更多内容...

标题: #include <qaxscript.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
继承自: QObject

公共类型

enum FunctionFlags { FunctionNames, FunctionSignatures }

公共函数

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

信号

void entered()
void error(int code, const QString &description, int sourcePosition, const QString &sourceText)
void finished()
void finished(const QVariant &result)
void finished(int code, const QString &source, const QString &description, const QString &help)
void stateChanged(int state)

详细说明

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

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

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

另请参阅 QAxScriptEngine 、QAxScriptManager 、QAxBase 以及ActiveQt 框架。

成员类型文档

enum QAxScript::FunctionFlags

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

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

成员函数文档

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

创建一个名为name 的QAxScript对象,并将其注册到QAxScriptManager (manager )。此操作通常由QAxScriptManager 类在loading a script 时执行。

脚本必须始终具有名称。需要一个管理器,以便脚本代码能够引用应用程序中的对象。manager 会取得该对象的所有权。

[override virtual 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 ,将参数var1 、var1 、var2 、var3 、var4 、var5 、var6 、var7 和var8 作为参数传递,并返回该函数返回的值;如果函数未返回值或函数调用失败,则返回无效的QVariant 。

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

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

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

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

这是一个重载函数。

[signal] void QAxScript::entered()

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

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

当运行脚本时发生执行错误,将发出此信号。

code description 、 和 包含有关该执行错误的信息。sourcePosition sourceText

[signal] void QAxScript::finished()

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

注意:此 信号已被重载。要订阅此信号:

// Connect using qOverload:
connect(axScript, qOverload<>(&QAxScript::finished),
        receiver, &ReceiverClass::slot);

// Or using a lambda:
connect(axScript, qOverload<>(&QAxScript::finished),
        this, []() { /* handle finished */ });
有关更多示例和方法,请参阅“连接到重载信号”。

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

result 包含脚本的执行结果。如果脚本没有返回值,则该信号将是一个无效的QVariant 。

注意:此 信号已被重载。要连接到此信号:

// Connect using qOverload:
connect(axScript, qOverload(&QAxScript::finished),
        receiver, &ReceiverClass::slot);

// Or using a lambda:
connect(axScript, qOverload(&QAxScript::finished),
        this, [](const QVariant &result) { /* handle finished */ });
有关更多示例和方法,请参阅“连接到重载信号”。

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

code,source,description 和help 包含脚本终止时的异常信息。

注意:此 信号已被重载。要连接到此信号:

// Connect using qOverload:
connect(axScript, qOverload(&QAxScript::finished),
        receiver, &ReceiverClass::slot);

// Or using a lambda:
connect(axScript, qOverload(&QAxScript::finished),
        this, [](int code, const QString &source, const QString &description, const QString &help) { /* handle finished */ });
有关更多示例和方法,请参阅“连接到重载信号”。

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

返回脚本的名称。

[signal] void QAxScript::stateChanged(int state)

当脚本引擎状态发生变化时,会触发此信号。state 可以是“QAxScriptEngine::State ”枚举中的任意值。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.