QT小白,用python描述问题如下。
1 class NodeGfx(QGraphicsObject):
2
3 sizeChanged = pyqtSignal()
4
5 def initUI(self):
6 ...
7 ...
8
9 self.frame = QFrame()
10 self.sizeChanged.connect(self.onSizeChanged)
11
12 self.proxy = QWidgetGraphicsProxy(self)
13 self.proxy.setWidget(self.frame)
14
15
16 def onSizeChanged(self):
17 self.frame.resize(get_frame_size_based_on_current_node_size())
18
19
20 def mouseMoveEvent(self, event):
21 ...
22 ...
23
24 self._width = xxx
25 self._height = xxx
26
27 self.onSizeChanged() // <---
28
29 or:
30
31 self.sizeChanged.emit() // <---
mouseMoveEvent函数可能resize整个NodeGfx,所以要resize里面的Frame。
这里resize Frame的时候,应该用第27行还是第31行?
我的理解是self.sizeChanged是moc生成的一个成员函数。
而且这里应该是DirectConnection所以是直接onSizeChanged(),所以直接27行就可以。
如果是对的的话,应该什么时候用signal emit呢?
是不是如果修改同一个class内部的widgets的时候就可以直接resize。
但是如果修改class外部的某个widgets,或者同一个class的另一个instance的时候,就该用signal/slot ?
谢谢!
--
FROM 73.162.73.*