Qt ActiveX dynamicCall:参数计数错误

Qt ActiveX dynamicCall: bad parameter count

本文关键字:错误 参数 ActiveX dynamicCall Qt      更新时间:2023-10-16

我正试图在程序中使用ActiveX控件。

QAxWidget* mAX = new QAxWidget();
mAX->setControl("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}");

我知道有一个功能:

put_ChannelType(long newValue)

但当我尝试执行它时:

mAX->dynamicCall("put_ChannelType(long)",2);
mAX->dynamicCall("put_ChannelType(int)",2);
mAX->dynamicCall("put_ChannelType(long)",QVariant(2));
mAX->dynamicCall("put_ChannelType(int)",QVariant(2));

我得到:

QAxBase: Error calling IDispatch member put_ChannelType: Bad parameter count

知道出了什么问题吗?

编辑:

奇怪的是如果我打电话给

mAX->dynamicCall("put_ChannelType()");

我没有收到任何错误消息。。。

编辑2:

这也失败了(正如康斯坦丁所建议的)

QList<QVariant> varlist;
varlist << (int)1;
mAX->dynamicCall("put_ChannelType(int)",varlist);

使用generateDocumentation()函数解决了这个问题。

我在另一个应用程序中使用了这个ActiveX控件,但它是MFC应用程序。

我所指的函数名(在VS创建的机器生成的IDispatch包装类中)似乎与列出的Qt不同。

即put_ChannelType实际上是SetChannelType。。。

也许这只是版本问题?

无论如何,重要的是要知道generateDocumentation()可以列出您可以使用dynamicCall调用的所有函数。

可以吗?mAX->dynamicCall("put_ChannelType(const QVariant&)",(long)2);