找回密码
 立即注册
收起左侧

Qt调用ocx报错

0
回复
580
查看
[复制链接]

尚未签到

来源: 2023-8-15 13:27:11 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 xiaolin 于 2023-8-15 13:28 编辑

1开发环境windows10 64bit; qt 5.15.2 ; msvc2019 64bitqt creator 5.0.3


2QAxObject::generateDocumentation() QAxObject对象函数导出的接口函数如下所示

slot:
int GetStagePosition(QVariant& x, QVariant& y, QVariant& z, QVariant& t, QVariant& r, QVariant& m);



导出的文档给出了两种调用方法:
int GetStagePosition (QVariant& x, QVariant& y, QVariant& z, QVariant& t, QVariant& r, QVariant& m) [slot]


使用信号去调用:

QObject::connect(sender, SIGNAL(someSignal(QVariant&, QVariant&, QVariant&, QVariant&, QVariant&, QVariant&)), object, SLOT(GetStagePosition(QVariant&, QVariant&, QVariant&, QVariant&, QVariant&, QVariant&)));


或者直接调用:

QVariantList params = ...
int result = object->dynamicCall("GetStagePosition(QVariant&, QVariant&, QVariant&, QVariant&, QVariant&, QVariant&)", params).toInt();


3按照第一种方法去尝试

QObject::connect(this,  SIGNAL( sig_GetStagePosition(QVariant&,QVariant&,QVariant&,QVariant&,QVariant&,QVariant&) ), m_axObject, SLOT( GetStagePosition(QVariant&,QVariant&,QVariant&,QVariant&,QVariant&,QVariant&) ));


sig_GetStagePosition这是我自己定义的信号
m_axObject:这是 QAxObject 的对象.


我放到按钮里面去触发
QVariant varX, varY, varZ, varT, varR, varM;
emit sig_GetStagePosition(varX, varY, varZ, varT, varR, varM);


当我点击按钮去触发信号时,会报如下的错误
QAxBase: Error calling IDispatch member GetStagePosition: Type mismatch in parameter 0



4当我尝试用第二种方法去调用

QVariant qvarX, qvarY, qvarZ, qvarT, qvarR, qvarM;

QVariantList args;
args << qvarX << qvarY << qvarZ << qvarT << qvarR << qvarM;

m_axObject->dynamicCall("GetStagePosition(QVariant&, QVariant&, QVariant&, QVariant&, QVariant&, QVariant&)", args);


当我点击按钮去调用,还是报相同的错误
QAxBase: Error calling IDispatch member GetStagePosition: Type mismatch in parameter 0



我不太明白问题出在什么地方,非常感谢能够帮我解决这个bug

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了