QAxWidget.dynamicCall适用于pyqt5.5.1,但不适用于qt5.7(c ++)

时间:2016-10-01 13:19:25

标签: c++ qt pyqt qt5 activex

目前,我有一个'xyz.ocx'文件,想要调用它的函数。

正如我在标题中提到的,我使用PyQt5.5.1和Python 3.4.4成功调用了它的函数。 这是以下代码。

from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QApplication
if __name__ == "__main__":
    app = QApplication([])
    ocx = QAxWidget("myclsid....")  # ActiveXControl Object
    ocx.dynamicCall("somemethod()") # It worked. Some dialog opened by this function.
    app.exec_()

然而,当我用Qt5.7.0和VS2015做同样的事情时,我什么也得不到(没有错误,没有正确执行函数,什么都没有)。这是我尝试过的以下代码。

#include <QAxWidget.h>
#include <QtWidgets/QApplication>
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QAxWidget* ocx = new QAxWidget("myclsid...")
    ocx->dynamicCall("somemethod()"); 

// Nothing happened. 
// No error, no dialog appeared(dialog should be appeared by this function). 
// And also the weird thing is the same thing happened(no error, just nothing) 
// even I called some non-existing function such as dynamicCall("fuiwhfueohiwuohfewlfae()")
// (no "No Such Property" error occured)

    return a.exec();
}

正如我评论的那样,当我调用dynamicCall(somemethod())时不会发生任何事情,就像上面的python&amp; pyqt例子。因为我是qt的新手,所以我无法弄清楚我的C ++和Qt代码是怎么回事。我的C ++&amp;是否有任何可能的原因? Qt代码无法正常工作?我该如何解决这个问题?

非常感谢任何建议或帮助。感谢。

+++ ADDED

我刚刚意识到我的pyqt5.5.1是32位pyqt而qt5.7.0是64位pyqt,而我的ocx文件是32位。这有可能导致问题吗?

0 个答案:

没有答案