Many thanks,Andreas. On Mon, Sep 20, 2010 at 2:09 AM, Andreas Pakulat <ap...@gmx.de> wrote:
> On 19.09.10 18:15:15, Von wrote: > > Hi,Algis,many thanks for all these informations. > > At first I thought QtCore.QtObject.connect as static method of > > QtObject,later I realized that,this is py style of calling super method. > > That's why I asked question (3). > > The document of pyqt says "The code (or component) that emits the signal > > does not know or care if the signal is being used." > > In my head,the implementation of signal and slot is an observer pattern. > > Pseudo-code: > > def connect(source,signal,slot): > > if(not source.slots[signal]): > > source.slots[signal] = [] > > source.slots[signal].append(slot) > > > > def emit(signal,param): > > for slot in self.slots[signal]: > > slot(param) > > I am wondering why signal does not know what slots bind with it? > > That pseudo code is pretty close to reality, except that (in C++ Qt) > emit is just a macro and the for slot in slots-stuff is in the > moc-generated code. So the signal does know which slots are connected, > but whoever call emit mysignal doesn't know and doesn't care. Thats the > point of loosely coupled objects and encapsulation. The code that emits > the signal always does so, no matter wether there are any connected > slots or not. So the for-loop might not run its body even once, but the > 'emission' is always done. Thats what is meant with 'the code that emits > the signal doesn't know or care if the signal is being used' > > Andreas > > -- > Your step will soil many countries. > _______________________________________________ > PyQt mailing list PyQt@riverbankcomputing.com > http://www.riverbankcomputing.com/mailman/listinfo/pyqt >
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt