c++ - Qt ActiveX 动态调用 : bad parameter count

标签 c++ qt activex

我正在尝试在我的程序中使用 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 调用的所有函数。

关于c++ - Qt ActiveX 动态调用 : bad parameter count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859552/

相关文章:

c++ - stdlib 是否提供类型列表?

C++ 抽象基类构造函数/析构函数 - 一般正确性

excel - 为什么开发人员选项卡的插入菜单上的 ActiveX 控件被禁用?

vba - 如何在表单控件中选择 ActiveX 选项/单选按钮

c++ - 画线到QImage

c++ - 要在 Excel 工作表上直接使用 ActiveX 控件,有哪些必要和充分的要求?

c++ - QuickFix MessageCracker : How to decide which messages should be implemented?

c++ - -Woverflow catn cout值

c++ - 使用主窗口使 Qt 小部件拉伸(stretch)和缩放

qt - 是否可以更改 Qt 中顶级菜单的外观?