一.前言
QAxObject可以实例化为一个空对象,并包含要操作的COM对象的名称,或者带有一个指向表示现有COM对象的IUnknown的指针。如果COM对象实现IDispatch接口,则该对象的属性、方法和事件将变为Qt属性、槽和信号。基类QAxBase提供了一个API,用于通过IUnknown指针直接访问COM对象。
QAxObject是一个QObject,可以这样使用,例如,可以组织在对象层次结构中,接收事件并连接到信号和插槽。
QAxObject还从QAxBase继承了大部分与ActiveX相关的功能,尤其是dynamicCall()和querySubObject()
因此,QAxObject简单概括为:可以调用系统基层功能通信COM接口,用QT的Qt属性、槽和信号来操作相关应用功能,例如对office软件的操作:word、excel等实现文本、图片、表格的操作,组建成自己软件的应用。
二.QAxObject的主要函数
QAxObject的主要函数有三个:querySubObject()、dynamicCall()和property属性设置等。
2.1 querySubObject()函数介绍
querySubObject()
是 QAxObject
类中的一个方法,用于获取 COM 对象中的子对象。在使用该方法时,需指定子对象的名称或者索引。该方法主要实现了访问 COM 对象中的子对象,并返回相应的 QAxObject
对象,方便我们对其进行操作。
QAxObject
类用于访问 ActiveX 对象,ActiveX 对象是一种基于 COM(Component Object Model,组件对象模型)技术的可重用二进制组件,可以通过它们的公开接口来访问其功能和数据。COM 对象支持多个接口,因此可以通过不同的接口来实现不同的功能。在使用 querySubObject()
方法时,我们可以通过传递子对象的名称或者索引来获取相应的 QAxObject
对象。通过这个 QAxObject
对象,我们就可以访问到所需要的属性和方法,并进行相应的操作。
例如,在使用 Microsoft Word 的 COM 接口时,我们可以创建一个 Word.Application 对象,然后通过它的 Documents
属性获取 Documents
对象,再通过 Documents
对象的 Add()
方法添加一个新文档,最后通过 ActiveDocument
属性获取当前激活的文档。其中,Documents
对象和 <