QAxBaseWidget 类

QAxBaseWidget 提供了静态属性和信号,用于 QAxWidget更多...

头文件 #include <QAxBaseWidget>
CMakefind_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmakeQT += axcontainer
Qt 6.0
继承 QWidgetQAxObjectInterface
继承自

QAxWidget

属性

信号

voidexception(int code, const QString &source, const QString &desc, const QString &help)
voidpropertyChanged(const QString &name)
voidsignal(const QString &name, int argc, void *argv)

详细信息

属性文档

classContext : const ulong

此属性保存 ActiveX 控件将要运行的上下文(默认 CLSCTX_SERVER)。

此属性影响调用 CoCreateInstance 时的 "dwClsContext" 参数。这可以用来控制支持这两种选择的自定义程序(in-proc vs. out-of-proc)的启动。此外,它还可以与 CLSCTX_ENABLE_CLOAKING 和一个模拟令牌一起使用来修改/减少控件权限。

注意,它必须在调用 setControl() 之前设置才有任何效果。

另请参阅 control

control : const QString

此属性保存由此 QAxBaseWidget 对象封装的 COM 对象的名称。

设置此属性初始化 COM 对象。任何之前设置的 COM 对象都将关闭。

设置此属性的最低效方法是使用已注册组件的 UUID,例如。

ctrl->setControl("{8E27C92B-1264-101C-8A2F-040224009C02}");

效率第二高的方法是使用已注册控件的类名(带或不带版本号),例如。

ctrl->setControl("MSCal.Calendar");

最慢但最简单的方法是使用控件的完整名称,例如。

ctrl->setControl("Calendar Control 9.0");

也可以从文件中初始化对象,例如。

ctrl->setControl("c:/files/file.doc");

如果使用组件的 UUID,可以使用以下模式在远程机器上初始化控件,用于初始化授权控件或连接到正在运行的对象

  • 要在不同机器上初始化控件,请使用以下模式
    <domain/username>:<password>@server/{8E27C92B-1264-101C-8A2F-040224009C02}
  • 要初始化授权控件,请使用以下模式
    {8E27C92B-1264-101C-8A2F-040224009C02}:<LicenseKey>
  • 要连接到已运行的对象,请使用以下模式
    {8E27C92B-1264-101C-8A2F-040224009C02}&

前两种模式可以组合使用,例如在远程机上初始化受许可的控制

ctrl->setControl("DOMAIN/user:password@server/{8E27C92B-1264-101C-8A2F-040224009C02}:LicenseKey");

控制器的读函数总是返回控制器的UUID(如果有),包括许可证密钥、服务器名称,但不包括用户名、域或密码

另请参阅classContext.

成员函数文档

[signal] void QAxBaseWidget::exception(int code, const QString &source, const QString &desc, const QString &help)

当使用OLE自动化接口IDispatch调用COM对象时抛出异常时,这个信号将被发射。codesourcedeschelp 提供了COM服务器提供的异常信息,可用于向最终用户提供有用的反馈。help 包括帮助文件和括号中的帮助上下文ID,例如 "filename [id]"。

另请参阅QAxBaseObject::exception.

[signal] void QAxBaseWidget::propertyChanged(const QString &name)

如果COM对象支持属性通知,则当被调用改名的属性 name 发生改变时,这个信号被发射。

另请参阅QAxBaseObject::propertyChanged.

[signal] void QAxBaseWidget::signal(const QString &name, int argc, void *argv)

这个通用信号在COM对象发出事件 name 时被发出。argc 是事件提供的参数数量(DISPPARAMS.cArgs),argv 是参数值指针(DISPPARAMS.rgvarg)。注意参数值的顺序是颠倒的,即数组的最后一个元素是函数的第一个参数。

void Receiver::slot(const QString &name, int argc, void *argv)
{
    VARIANTARG *params = (VARIANTARG*)argv;
    if (name.startsWith("BeforeNavigate2(")) {
        IDispatch *pDisp = params[argc-1].pdispVal;
        VARIANTARG URL = *params[argc-2].pvarVal;
        VARIANTARG Flags = *params[argc-3].pvarVal;
        VARIANTARG TargetFrameName = *params[argc-4].pvarVal;
        VARIANTARG PostData = *params[argc-5].pvarVal;
        VARIANTARG Headers = *params[argc-6].pvarVal;
        bool *Cancel = params[argc-7].pboolVal;
    }
}

如果事件有不受支持的数据类型的参数,请使用此信号。否则,直接连接到信号 name

另请参阅QAxBaseObject::signal.

© 2024 The Qt Company Ltd. 本文档中包含的贡献的文档版权属于各自的拥有者。提供的文档受Free Software Foundation 发布的 GNU Free Documentation License version 1.3 条款的许可。Qt和相应的标志是The Qt Company Ltd在芬兰和其他全球国家的商标。所有其他商标均属于其各自的拥有者。