本页内容

QAxObject Class

QAxObject 类提供了一个QObject ,该接口封装了一个 COM 对象。更多内容...

标题: #include <qaxobject.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
继承自:QAxBaseObject 以及QAxBase
被继承者:

QAxScriptEngine

公共函数

QAxObject(QObject *parent = nullptr)
QAxObject(IUnknown *iface, QObject *parent = nullptr)
QAxObject(const QString &c, QObject *parent = nullptr)
virtual ~QAxObject() override
bool doVerb(const QString &verb)

重新实现的受保护函数

virtual void connectNotify(const QMetaMethod &signal) override

详细说明

QAxObject 可以作为空对象实例化,也可以指定其应封装的 COM 对象的名称,或者指定指向代表现有 COM 对象的 IUnknown 指针。如果该 COM 对象实现了IDispatch 接口,则该对象的属性、方法和事件将作为 Qt 属性、插槽和信号提供。 基类QAxBase 提供了一个 API,可通过 IUnknown 指针直接访问 COM 对象。

QAxObject 是一个QObject ,可以作为该接口使用,例如,它可以组织在对象层次结构中,接收事件并连接到信号和槽。

QAxObject 还从QAxBase 继承了大部分与 ActiveX 相关的功能,尤其是dynamicCall() 和querySubObject()。

警告:您可以 创建 QAxObject 的子类,但不能在子类中使用Q_OBJECT 宏(生成的 moc 文件将无法编译),因此无法添加更多的信号、插槽或属性。这一限制是由于运行时生成的元对象信息所致。 要解决此问题,请将 QAxObject 作为QObject 子类的成员进行聚合。

另请参阅 QAxBase 、QAxWidget 、QAxScript 以及ActiveQt 框架。

成员函数文档

[explicit] QAxObject::QAxObject(QObject *parent = nullptr)

创建一个空的 COM 对象,并将 `parent ` 传递给 `QObject ` 构造函数。要初始化该对象,请调用 `setControl()`。

另请参阅 setControl() 。

[explicit] QAxObject::QAxObject(IUnknown *iface, QObject *parent = nullptr)

创建一个 QAxObject,该对象封装了由iface 引用的 COM 对象。parent 将被传递给QObject 的构造函数。

[explicit] QAxObject::QAxObject(const QString &c, QObject *parent = nullptr)

创建一个 QAxObject,该对象封装了 COM 对象c 。parent 会被传递给QObject 的构造函数。

另请参阅 setControl() 。

[override virtual noexcept] QAxObject::~QAxObject()

释放 COM 对象并销毁 `QAxObject`,同时清理所有已分配的资源。

[override virtual protected] void QAxObject::connectNotify(const QMetaMethod &signal)

重新实现了:QObject::connectNotify(const QMetaMethod &signal)。

bool QAxObject::doVerb(const QString &verb)

请求 COM 对象执行操作verb 。可用的动词由verbs() 返回。

如果对象能够执行该操作,该函数返回 true;否则返回 false。

© 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.