一.简单介绍:
1.ActiveQt包含QAxContainer和QAxServer组件。
1) QAxContainer允许使用COM对象,并且可以将ActiveX控件嵌入到Qt程序中去。
QAxContainer是有三个类组成的。分别是:
QAxObject封装了COM对象
QAxWidget封装了ActiveX控件
QAxBase是QAxObject和QAxWidget的父类,它实现了封装COM的核心函数。
通过调用QAxWidget的property()方法和SetProperty方法可以获取和设置ActiveX控件的属性。
调用ActiveX控件的方法属性需要COM中的数据类型和Qt中的数据类型的转换。COM中数据类型和Qt中的数据类型对应的表格:
2) QAxServer可以将我们写的Qt控件导出为COM对象或者是ActiveX控件。
3)一个简单例子:
#include <QApplication> #include <QtGui> #include <QAxWidget> int main(int argc, char *argv[]) { QApplication a(argc, argv); QAxWidget *flash = new QAxWidget(0,0); flash->resize(500,80); flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}")); flash->dynamicCall("LoadMovie(long,string)",0,"F:/1.swf"); flash->show(); return a.exec(); }
二.方法
1.首先在windows中注册idldrawx3.ocx
进入cmd,输入以下命令:(注意后面的路径要带双引号)
regsvr32 “C:\Program Files\ITT\IDL\IDL81\bin\bin.x86\idldrawx3.ocx”
2.Qt中调用ActiveX:
1)通过Qt设计师将 QAxWidget放到界面上;
2)右键->设置控件;
3)选择系统中注册的ActiveX控件IDLDrawWidget Control 3.0;
4)如果工程中没有添加ActiveQt支持,可以通过Qt->Qt Project Settings->Qt Modules 然后勾选ActiveQt container支持;如果是Qt Creator 工程,则需要在.pro文件中
添加: CONFIG += qaxcontainer
3. ActiveX中接口的调用,通过dynamicCall()实现;
dynamicCall()最多传递八个QVariant类型的参数,并且返回类型也是QVariant。