QAxBaseWidget Class
QAxBaseWidget 为QAxWidget 提供了静态属性与信号。更多内容...
| 头文件: | #include <qaxwidget.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
| qmake: | QT += axcontainer |
| 自: | Qt 6.0 |
| 继承自: | QWidget 以及QAxObjectInterface |
| 被继承自: |
属性
- classContext : ulong
- control : 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 : ulong
此属性保存 ActiveX 控件的运行上下文(默认值为 CLSCTX_SERVER)。
该属性会影响调用 CoCreateInstance 时传入的“dwClsContext”参数。对于同时支持“进程内”和“进程外”两种启动方式的控件,可通过此属性控制其启动模式。 此外,当与 CLSCTX_ENABLE_CLOAKING 和一个模拟令牌配合使用时,它还可以用于修改/降低控件权限。
请注意,必须在调用setControl()之前设置此属性,否则不会生效。
另请参阅 control 。
control : 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 对象时,该对象抛出异常,便会发出此信号。code 、source 、desc 和help 提供了由 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()。
© 2026 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.