1

在 PySide 中,我想用将信号定义为参数的类发出一个信号。例如:

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 作为类型的解决方案。有任何想法吗?

4

2 回答 2

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)
于 2013-10-16T19:47:34.083 回答
1

你只是不需要这个参数。
在插槽内使用QObject::sender找出发出信号的对象。

于 2013-03-30T11:30:10.403 回答