QAxScript 类
QAxScript 类提供对脚本代码的封装。 更多...
头文件 | #include <QAxScript> |
CMake | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
qmake | QT += axcontainer |
继承 | QObject |
公共类型
枚举 | 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类在加载脚本时完成。
脚本应始终有一个名称。一个管理者是必须的,以便脚本代码能够引用应用程序中的对象。《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,传递参数var1、var2、var3、var4、var5、var6、var7和var8作为参数,并返回函数返回的值,或者在函数不返回值或函数调用失败时返回一个无效的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)
当脚本执行过程中发生错误时,该信号将被触发。
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
返回脚本的名称。
[信号]
void QAxScript::stateChanged(int 状态)
当脚本引擎改变状态时,会发出此信号。状态可以是 QAxScriptEngine::State
枚举中的任何值。
© 2024 Qt 公司 Ltd. 本文档中包含的贡献的文档版权属于其各自的所有者。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权。Qt 及相关标志是芬兰及/或全球其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。