目录
四、在 Qt Designer 中添加 QAxWidget 控件
一、获取ocxuuid
使用OleView.exe打开ocx插件
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: ******.ocx
[
uuid(********-****-****-****-************),
version(1.0),
helpstring....
helpfile.....
helpcontext(00000000),
custom......
custom....
custom(........., "Created by MIDL version 7.00.0555 at Thu Jan 14 14:30:08 2021
")
]
即可看到ocx的uuid
ps:
1、OleView.exe位置:如果安装了VS的话,先用其提供的OleView.exe(一般在C:\Program Files (x86)\Windows Kits\*****\bin\x64路径下)
2、OleView.exe打开报错(dllRegisterServer in iviewers.dll failed)问题的解决:
管理员打开即可。
二、通过Qt提供的工具对COM生成头文件和实现文件
然后Qt提供了一个dumpcpp.exe,用来对指定的COM接口生成.h和.cpp文件,命令也很简单传入COM组件的UUID即可,形如"dumpcpp.exe {00000000-0000-0000-0000-000000000000}" ,然后在当前目录下就会生成对应的.h和.cpp文件了。
而且生成的类都是基于Qt的类型,使用起来相当的方便。
三、在工程中引入生成的文件,直接实例化并调用即可。
ps:
问题: 无法打开源文件"qaxobject.h",无法打开源文件"qaxwidget.h"
解决方案:
1、VS中: 项目 -> 属性 -> Qt Project Setting -> Qt Modules 增加 “ axcontainer ”
2、若依旧报错,则把
#include <qaxobject.h>
#include <qaxwidget.h>
改为
#include <ActiveQt/QAxObject>
#include <ActiveQt/QAxWidget>
至此我的代码可以正常运行 (^_^)
四、在 Qt Designer 中添加 QAxWidget 控件
添加 QAxWidget 控件,然后右键 -> 设置控件选择相应的插件(这里我不知道不选会不会有问题)。
五、调用 OCX 里的方法
将 QAxWidget 控件强转为 OCX 中继承自 QAxWidget 的类,然后进行方法的调用
((IRImageOCXLibSingle::IRImageOCX*)ui.pic)->SetFileName(dirpath);
((IRImageOCXLibSingle::IRImageOCX*)ui.pic)->ShowMaxPoint(true);