QAxScript Class
QAxScript 类为脚本代码提供了一个封装。更多
头文件: | #include <QAxScript> |
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::FunctionNames | 0 | 只返回函数名。 |
QAxScript::FunctionSignatures | 1 | 返回带有签名的函数。 |
成员函数文档
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)
这是一个重载函数。
arguments 调用function 并返回结果。脚本执行完毕后返回。
有关如何调用脚本函数的更多信息,请参阅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()
当脚本引擎执行完代码时发出该信号。
注意:该类重载了信号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)
这是一个重载函数。
code source, 和 包含脚本终止时的异常信息。description help
注意:该类重载了信号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
返回脚本的名称。
[signal]
void QAxScript::stateChanged(int state)
该信号在脚本引擎改变状态时发出。state 可以是QAxScriptEngine::State
枚举中的任意值。
© 2025 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.