• 8790阅读
  • 4回复

如何利用QAxObject处理COM组件的事件[已解决] [复制链接]

上一主题 下一主题
离线sbtree
 
只看楼主 倒序阅读 楼主  发表于: 2010-01-25
利用dumpcpp从dll文件生成了相应的cpp和h文件,看了ActiveX框架的文档,说COM中的属性,方法和事件会相应的转化成qt中的属性,槽和信号,可是在生成的头文件中根本就看不到相关的槽和信号,文档中另外有处提醒说QAxObject的子类不能使用Q_OBJECT宏,那么现在就有点糊涂了,我如何应用子类中对应于原始COM方法和事件的槽和信号呢?[]
[ 此帖被sbtree在2010-07-27 21:07重新编辑 ]
windows 7 + VC++2008 + Qt4.5.2
离线dbzhang800

只看该作者 1楼 发表于: 2010-01-25
COM 事件 被封装成信号了,直接用信号就行了。

要了解有哪些信号可用,可以用

QString QAxBase::generateDocumentation ()
或者
dumpdoc.exe

生成 html 文档来看
离线sbtree
只看该作者 2楼 发表于: 2010-01-25
多谢楼上,按照你的方法我生成了一个文档,问题是还是无法了解到COM本身的事件,文档中只给出了3个信号,都是从QAxBase中继承过来的,而我需要的原始COM的事件信息文档中还是没有表达出来
Signals:
void exception(int code, QString source, QString disc, QString help);
void propertyChanged(QString name);
void signal(QString name, int argc, void* argv);
windows 7 + VC++2008 + Qt4.5.2
离线sbtree
只看该作者 3楼 发表于: 2010-01-25
仔细看了一下void signal(QString name, int argc, void* argv);,发现这个信号可以解决我的问题,因为参数name传递的就是事件的名称,试一下去,回来报告结果
windows 7 + VC++2008 + Qt4.5.2
离线sbtree
只看该作者 4楼 发表于: 2010-07-27
问题原因找到了,重新看了原始的COM文档,发现自己没读仔细,文档分别针对VB和VC设计了不同的事件,某些在VC下不存在。
是我自己的失误,多谢大家的回帖!就此结帖
windows 7 + VC++2008 + Qt4.5.2
快速回复
限100 字节
 
上一个 下一个