QAxScriptManager 类
QAxScriptManager 类提供了应用程序对象和脚本代码之间的桥梁。 更多信息...
头文件 | #include <QAxScriptManager> |
CMake | 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 Script 技术提供的脚本语言(通常为 JScript 和 VBScript)之间的桥梁。
为您的应用程序中的每个单独文档创建一个 QAxScriptManager,并使用 addObject() 添加脚本需要访问的 COM 对象。然后调用 load() 脚本源,并使用 call() 调用函数。
警告: 该类在 bcc5.5 编译器中不可用。
另请参阅 QAxScript、QAxScriptEngine、QAxBase 以及 ActiveQt 框架。
成员函数文档
[显式构造函数]
QAxScriptManager::QAxScriptManager(QObject *parent = nullptr)
创建一个 QAxScriptManager 对象。将 parent 传递给 QObject 构造函数。
通常在一个应用的每个文档中创建一个 QAxScriptManager。
[重写虚函数 noexcept]
QAxScriptManager::~QAxScriptManager()
销毁对象,释放所有已分配的资源。
void QAxScriptManager::addObject(QAxBase *object)
将 object 添加到管理器中。由该管理器处理的脚本可以在代码中使用对象的 objectName 属性访问该对象。
在加载任何脚本之前,必须添加所有必要的对象。
void QAxScriptManager::addObject(QObject *object)
这是一个重载函数。
将 object 的通用 COM 包装器添加到管理器中。object 必须使用 QAxServer 模块提供的功能作为一个 COM 对象公开。使用此函数的应用必须链接到 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。当脚本执行完成后,返回调用。
在大多数脚本引擎中,唯一支持的参数类型是 "const QVariant&",例如,调用一个 JavaScript 函数
function setNumber(number)
{
n = number;
}
使用:
QValueList args; args << 5; script->call("setNumber(const QVariant&)", args);
与 dynamicCall 类似,参数可以直接嵌入到函数字符串中。
script->call("setNumber(5)");
但这要慢一些。
不支持反射的脚本引擎提供的函数不可用,必须使用各自的 QAxScript::call() 在相应的 script 对象上直接调用。
请注意,调用此函数可能比直接在相应的 QAxScript 上使用 call() 快得多。
QVariant QAxScriptManager::call(const QString &function, QList<QVariant> &arguments)
这是一个重载函数。
调用函数,传递 arguments 作为参数,并返回结果。当脚本执行完成后返回。
[信号]
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)
这是一个重载函数。
从文件中加载源代码。可以使用其名称引用脚本,名称不应为空。
如果文件加载成功,则函数返回文件中的代码对应的脚本引擎指针;否则返回0。
根据文件的扩展名确定使用的脚本引擎。默认情况下,".js"文件被视为JScript文件,而".vbs"和".dsm"文件被视为VBScript。可以使用registerEngine()()注册其他脚本引擎。
[静态]
bool QAxScriptManager::registerEngine(const QString &name, const QString &extension, const QString &code = QString())
注册名为name的脚本引擎,如果找到引擎则返回true;否则不执行任何操作并返回false。
当以指定的扩展名加载文件,或者加载包含字符串code的源代码时,将使用脚本引擎。
QAxScript *QAxScriptManager::script(const QString &name) const
返回名为name的脚本。
可以使用返回的指针通过QAxScript::call()直接调用函数,直接访问脚本引擎,或删除并因此卸载脚本。
[静态]
QString QAxScriptManager::scriptFileFilter()
返回一个列出了所有支持的脚本语言的文件过滤器。此过滤器字符串便于与QFileDialog一起使用。
QStringList QAxScriptManager::scriptNames() const
返回包含所有脚本名称的列表。
© 2024 The Qt Company Ltd. 包含在此处的文档贡献是各自所有者的版权。提供的文档受GNU免费文档许可协议版本1.3的条款约束,由自由软件基金会发布。Qt及其相关徽标是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为各自所有者的财产。