使用Qt ActiveX生成Ocx 避坑指南(一)

2021-09-18 05:48:26 字數 1159 閱讀 8389

最近做專案用qt生成ocx供mfc呼叫,經歷坎坷,問題不斷。。這下面詳細給出qt生成ocx的避坑指南,

本人使用的是qt5.9 + vs2015 ,用vs生成比較簡單,vs上裝上qt的外掛程式,然後新建專案->選擇qt5 projects 選擇最後乙個activeqt server,然後就可以生成如下圖:

qt使用ocx有兩種方法:

一是使用qaxwidget,當然使用時先註冊ocx, 直接在designed中拖入雙擊選擇ocx控制項,axwidget就會載入ocx,在**dynamiccall()傳入函式原型和引數呼叫使用介面,如果不用designed在**中直接寫,使用setcontrol設定ocx 的uuid,具體檢視uuic,可以參考

qaxwidget *flash = new qaxwidget(0,0);

flash->setcontrol(qstringliteral(""));

flash->dynamiccall("openfile(qstring, qstring)", "../abc.pdf", "");第二種方法比較好用,再使用較多介面使用dynamiccall呼叫不太方便,使用qt提供了dumpcpp.exe,用來對指定的com介面生成.h和.cpp檔案,命令也很簡單傳入com元件的uuid即可,形如"dumpcpp.exe " ,然後在當前目錄下就會生成對應的.h和.cpp檔案了。dumpcpp.exe一般在qt安裝目錄bin下,之後就可以正常使用介面了。

mfc使用qt的ocx會出現座標位置不對的情況,在mfc中使用qt生成的ocx時,生成介面檔案生成.h和.cpp檔案時,會報錯qrect錯誤,這裡貌似時由於mfc中座標轉換不正確導致的,將qrect改為crect,即可編譯通過。在qt的ocx中使用qcombobox時會出問題,mfc中由於座標轉換不正確導致qcombobox的下拉框彈出位置一直不正確。在使用qwebengineview時多次置空**,可能會導致崩潰,需要加以處理,並清理快取。

綜上所述,使用qt的ocx是個大坑,能避開則避開,非要使用也請注意這些問題。

qt ocx問題解決:

1.使用qt activex生成ocx 避坑指南(一)

2.qt activex 避坑(必坑)指南(二)

OC 生成json檔案

void onjson nsdictionary dict 如果陣列或者字典中儲存了 nsstring,nsnumber,nsarray,nsdictionary,or nsnull 之外的其他物件,就不能直接儲存成檔案了.也不能序列化成 json 資料.nsdictionary dict 1.判斷...

OC基礎使用

oc物件類標頭檔案的兩個作用 1.宣告成員變數 2.宣告方法 特點 1.oc標頭檔案中宣告的成員變數都是私有的,方法都是公有的 五種訪問成員變數的方法 1.getter setter方法 2.自定義設定方法 3.自定義初始化方法 滿足條件 3.1.方法一般使用init開頭 3.2.使用id作為返回值...

OC語法基本使用

首先來了解一下 1.面向過程與物件導向 1.1面向過程程式設計 什麼是面向過程?procedure,流程 主幹流程和分支流程 子模組,的復用 特點 所有的工作,乙個人幹,不利於工程協作 1.2 類和物件 1.2.1 從生活邏輯 類 物件 人 賈伯斯 庫克 電腦 你桌子上那台 我桌子上這台 類clas...