標籤:
一.簡單介紹:
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。
Visual Studio下Qt調用IDL