在PySide中,我想用类定义信号作为参数发出信号。 E.g:
class MyWidget(QtGui.QWidget):
signal_widget_closed = QtCore.Signal(MyWidget)
def close(self):
super(MyWidget, self).close()
self.signal_widget_closed.emit(self)
但是,第二行给出了NameError,因为此时MyWidget还不存在。 现在我通过发出像这样的QWidget来解决这个问题
signal_widget_closed = QtCore.Signal(QtGui.QWidget)
但我更喜欢使用MyWidget作为类型的解决方案。有什么想法吗?
答案 0 :(得分:1)
您不需要此参数。
在插槽中使用QObject::sender来找出发出信号的对象。
答案 1 :(得分:1)
可以在类定义之后定义信号。
您的代码如下:
class MyWidget(QtGui.QWidget):
def close(self):
super(MyWidget, self).close()
self.signal_widget_closed.emit(self)
MyWidget.signal_widget_closed = QtCore.Signal(MyWidget)