你这应该是循环调用了。。
signal/slot 是 listener 设计模式,当 frame 的 sizeChanged 被其它地方调用时,它会找到谁连接到自己,然后立即调用它。但是你的 onSizeChanged() 又会立即调用 resize(),来回循环了。你这应该是循环调用了。。
signal/slot 是 listener 设计模式,当 frame 的 sizeChanged 被其它地方调用时,它会
找到谁连接到自己,然后立即调用它。但是你的 onSizeChanged() 又会立即调用 resize()
,来回循环了。
在 qt 里面, sizeChanged() 这个 signal 是 moc 特别生成的函数,内容大概是:
# 伪代码
def sizeChanged(self):
for slot in self->slots_connected_to("sizeChanged"):
slot()
在 pyqt/pyside 里面, sizeChanged() 是一个对象,底层调用 c++ 的 signal/slot 函数
。内容大概是:
# 伪代码
class Signal:
def __init__(self, obj, signal_name):
self.obj, self.signal_name = obj, signal_name
def emit(self, *args, **kwargs):
QMetaObject.invokeMethod(self.obj, self.signal_name, *args, **kwargs)
def connect(self, obj, slot_name):
QObject.connect(self.obj, self._signal_name, obj, slot_name)
【 在 allegro 的大作中提到: 】
: QT小白,用python描述问题如下。
: [code=python]
: 1 class NodeGfx(QGraphicsObject):
: ...................
--
FROM 183.253.146.*