QAxBaseWidget Class
QAxBaseWidget 为QAxWidget 提供静态属性和信号。更多
头文件: | #include <QAxBaseWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
qmake: | QT += axcontainer |
自 | Qt 6.0 |
继承于 | QWidget 和QAxObjectInterface |
继承于 |
属性
- classContext : const ulong
- control : const QString
信号
void | exception(int code, const QString &source, const QString &desc, const QString &help) |
void | propertyChanged(const QString &name) |
void | signal(const QString &name, int argc, void *argv) |
属性文档
classContext : const ulong
该属性用于保存 ActiveX 控件将在其中运行的上下文(默认为 CLSCTX_SERVER)。
调用 CoCreateInstance 时,该属性会影响 "dwClsContext "参数。该属性可用于控制支持两种启动方式的控件的程序内启动和程序外启动。此外,当与 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)
当 COM 对象在使用 OLE 自动化接口 IDispatch 调用时抛出异常,就会发出该信号。code source desc help help 包括帮助文件,以及括号中的帮助上下文 ID,如 "文件名 [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() 。
© 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.