目前,我有一个'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位。这有可能导致问题吗?