QAxScriptManager Class
QAxScriptManager 类是应用程序对象与脚本代码之间的桥梁。更多
头文件: | #include <QAxScriptManager> |
CMake.QAxScriptManager | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
qmake: | QT += axcontainer |
继承: | QObject |
公共函数
QAxScriptManager(QObject *parent = nullptr) | |
virtual | ~QAxScriptManager() override |
void | addObject(QAxBase *object) |
void | addObject(QObject *object) |
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 = 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 |
QStringList | scriptNames() const |
信号
void | error(QAxScript *script, int code, const QString &description, int sourcePosition, const QString &sourceText) |
静态公共成员
bool | registerEngine(const QString &name, const QString &extension, const QString &code = QString()) |
QString | scriptFileFilter() |
详细说明
QAxScriptManager 是通过QAxObject 或QAxWidget 嵌入 Qt 应用程序的 COM 对象与通过 Windows 脚本技术(通常是 JScript 和 VBScript)提供的脚本语言之间的桥梁。
为应用程序中的每个独立文档创建一个 QAxScriptManager,并使用addObject() 添加脚本需要访问的 COM 对象。然后使用load() 添加脚本源,并使用call() 调用函数。
警告: 该类在 bcc5.5 编译器中不可用。
另请参阅 QAxScript,QAxScriptEngine,QAxBase 和ActiveQt 框架。
成员函数文档
[explicit]
QAxScriptManager::QAxScriptManager(QObject *parent = nullptr)
创建 QAxScriptManager 对象。parent 将传递给QObject 构造函数。
通常会为应用程序中的每个文档创建一个 QAxScriptManager。
[override virtual noexcept]
QAxScriptManager::~QAxScriptManager()
销毁对象,释放所有分配的资源。
void QAxScriptManager::addObject(QAxBase *object)
将object 添加到管理器中。由该管理器处理的脚本可使用对象的objectName 属性访问代码中的对象。
在加载任何脚本之前,必须添加所有必要的对象。
void QAxScriptManager::addObject(QObject *object)
这是一个重载函数。
object object 必须使用 模块提供的功能作为 COM 对象公开。使用此函数的应用程序必须与 qaxserver 库链接。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 ,将参数var1,var1,var2,var3,var4,var5,var6,var7 和var8 作为参数传递,并返回函数返回的值,如果函数不返回值或函数调用失败,则返回无效的QVariant 。脚本执行结束后,调用返回。
在大多数脚本引擎中,唯一支持的参数类型是 "constQVariant&",例如,要调用 JavaScript 函数
function setNumber(number) { n = number; }
使用
QValueList args; args << 5; script->call("setNumber(const QVariant&)", args);
与dynamicCall 一样,参数可以直接嵌入函数字符串中。
script->call("setNumber(5)");
不过,这样会比较慢。
不支持自省功能的脚本引擎提供的函数不可用,必须在相应的script 对象上使用QAxScript::call() 直接调用。
请注意,调用该函数可能比直接在相应的QAxScript 对象上使用 call() 要慢得多。
QVariant QAxScriptManager::call(const QString &function, QList<QVariant> &arguments)
这是一个重载函数。
arguments 调用function 并返回结果。脚本执行完毕后返回。
[signal]
void QAxScriptManager::error(QAxScript *script, int code, const QString &description, int sourcePosition, const QString &sourceText)
当运行script 时发生执行错误时,会发出该信号。
code,description,sourcePosition 和sourceText 包含有关执行错误的信息。
警告: 请勿在与此信号相连的槽中删除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)
这是一个重载函数。
从file 中加载源代码。以后可使用name 引用该脚本,该脚本不应为空。
如果file 已成功加载,则函数返回指向file 中代码的脚本引擎指针;否则返回 0。
使用的脚本引擎由文件的扩展名决定。默认情况下,".js "文件被解释为 JScript 文件,而".vbs "和".dsm "文件被解释为 VBScript 文件。可以使用registerEngine() 注册其他脚本引擎。
[static]
bool QAxScriptManager::registerEngine(const QString &name, const QString &extension, const QString &code = QString())
注册名为name 的脚本引擎,如果找到该引擎,则返回 true;否则什么也不做,返回 false。
在加载带有给定extension 的文件或加载包含code 字符串的源代码时,将使用该脚本引擎。
QAxScript *QAxScriptManager::script(const QString &name) const
返回调用name 的脚本。
您可以使用返回的指针通过QAxScript::call() 直接调用函数,直接访问脚本引擎,或删除并卸载脚本。
[static]
QString QAxScriptManager::scriptFileFilter()
返回一个文件过滤器,列出所有支持的脚本语言。该过滤器字符串便于与QFileDialog.
QStringList QAxScriptManager::scriptNames() const
返回包含所有脚本名称的列表。
© 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.