Qt 關於COM組件的使用的記錄 (二)


接前面的COM組件使用記錄。

這里要說明一下QAxObject和QAxBase的區別。

幫助文檔中對QAxObject的說明:The QAxObject class provides a QObject that wraps a COM object.

       對QAxWidget的說明:The QAxWidget class is a QWidget that wraps an ActiveX control.

一個是封裝COM組件,一個是包裝ActiveX。

 

上一文中使用QAxObject類對象來做COM組件的使用,發現在實際使用中,有一些接口通過dynamicCall是調用不了的,會提示

QAxBase: Error calling IDispatch member checkDevice: Exception thrown by server

這樣的錯誤。

后來查看了通過dumpcpp工具導出的.h文件,里面的類是這樣

class CRITERIONLIB_EXPORT stdfcectl : public QAxWidget

因此嘗試修改成QAxWidget的對象指針來進行調用,就可以調用所有的接口了。

目前使用的Qt5.5版本中,幫助文檔是寫的QAxObject的使用用法;后來查閱了《C++ GUI Qt4 編程 (第二版)》第23章第二節內容。里面的組件是繼承的QWidget,也是用的QAxWidget來加載。

所以這里猜想,所實例化的對象,應該要根據組件的類型來選擇。如果包含窗口對象,使用QAxWidget,反之QAxObject。

另外,上文中生成的html文件,里面會有詳細的對每個接口的使用說明,是很好用的一個參考文件了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM