一.簡單介紹:
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。