The QAxScriptManager class provides a bridge between application objects and script code. 更多...
头: | #include <QAxScriptManager> |
CMake: |
find_package(Qt6 COMPONENTS AxContainer REQUIRED)
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 & 语言 ) |
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 () |
The QAxScriptManager acts as a bridge between the COM objects embedded in the Qt application through QAxObject or QAxWidget ,及透过 Windows Script 技术可用的脚本语言,通常是 JScript 和 VBScript。
Create one QAxScriptManager for each separate document in your application, and add the COM objects the scripts need to access using addObject ()。然后 load () 脚本源代码并援引函数使用 call ().
警告: 此类不可用于 bcc5.5 编译器。
另请参阅 QAxScript , QAxScriptEngine , QAxBase ,和 ActiveQt 框架 .
Creates a QAxScriptManager object. parent 被传递给 QObject 构造函数。
It is usual to create one QAxScriptManager for each document in an application.
[signal]
void
QAxScriptManager::
error
(
QAxScript
*
script
,
int
code
, const
QString
&
description
,
int
sourcePosition
, const
QString
&
sourceText
)
此信号被发射,出现执行错误当运行 script .
code , description , sourcePosition and sourceText 包含执行错误的有关信息。
警告: 不要删除 script 在连接到此信号的槽中。使用 deleteLater () 代替。
[override virtual]
QAxScriptManager::
~QAxScriptManager
()
销毁对象,释放所有分配资源。
添加 object 到管理器。由此管理器处理的脚本可以访问代码中的对象,使用对象的 objectName 特性。
必须添加所有必要对象,在加载任何脚本之前。
这是重载函数。
添加一般 COM (组件对象模型) 包裹器为 object 到管理器。 object 必须被暴露成 COM 对象使用功能提供通过 QAxServer 模块。使用此函数的应用程序必须链接到 qaxserver 库。
调用 function ,传递参数 var1 , var1 , var2 , var3 , var4 , var5 , var6 , var7 and 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 对象。
注意,调用此函数会比使用 call() 显著更慢在各个 QAxScript 直接。
这是重载函数。
调用 function 传递 arguments 作为参数,并返回结果。返回当脚本执行完成时。
返回具有所有可用函数的列表。不支持自省由脚本引擎提供的函数不在列表中。函数按完整原型提供 (或按名称提供),从属值对于 flags .
加载脚本源 code 使用脚本引擎对于 语言 。稍后可以引用脚本,以使用其 name 不应为空。
函数返回指针指向脚本为给定 code 若 code 加载成功;否则,返回 0。
若 语言 为空,将启发式确定它。若 code 包含字符串 End Sub 会将它解释成 VBScript,否则解释成 JScript。可以注册其它脚本语言使用 registerEngine ().
必须添加所有必要对象 (使用 addObject ()) before 加载任何脚本。若 code 声明已经可用的函数 (无论按哪种语言),将重载第一个函数且不再可以被调用凭借 call ();但它仍然是可用的通过调用其 script 直接。
另请参阅 addObject (), scriptNames (),和 functions ().
这是重载函数。
加载源代码从 file 。稍后可以引用脚本,以使用其 name 不应为空。
函数返回的指针指向脚本引擎对于代码在 file if 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 .
返回脚本称为 name .
可以使用返回指针以直接调用函数透过 QAxScript::call (),以直接访问脚本引擎,或删除并因此卸载脚本。
[static]
QString
QAxScriptManager::
scriptFileFilter
()
返回列出所有支持脚本语言的文件过滤器。此过滤器字符串是方便的为用于 QFileDialog .
返回具有所有脚本名称的列表。