我在QAxWidget类中有一个ActiveX控件,我试图将一个Activex事件连接到python中的一个Slot
void MoveComplete(int ID)[signal]
文档说
QObject::connect(object, SIGNAL(MoveComplete(int)), receiver, SLOT(someSlot(int)));
但是当我尝试运行它时,我得到:
NameError:全局名称' MoveComplete'没有定义。
我也试过像这样运行它
self.connect(self, QtCore.SIGNAL('MoveComplete(int)'), self, QtCore.SLOT(self.test2()))
但是它会在执行运动的函数的开头被调用,而不是在它完成之后调用。
如何将插槽连接到此信号?
答案 0 :(得分:0)
我显然无法测试这个,我不知道你指的是哪些文档,但这样的东西应该在PyQt4中起作用:
self.connect(axwidget, QtCore.SIGNAL('MoveComplete(int)'), self.test2)
也就是说,第一个参数是QAxWidget
类的实例,第二个参数是信号签名,最后一个参数是python可调用对象(即函数,方法,lambda等)。
在PyQt中连接信号并不总是像在C ++中那样工作。有关更多详细信息,请参阅PyQt4文档中的Old-style Signal and Slot Support。 New-style Signal and Slot Support更加pythonic(并且更不容易出错) - 但我不知道它是否适用于ActiveX控件。