[Qt-interest] signals and slots....revisited...
sarvesh saran
aquarian.thunder at gmail.com
Mon Mar 14 18:11:02 CET 2011
*It amazes me how someone can use Qt for longer time and not understand
signals/slots...*
*
*
it amazes me too.....quite absurd and downright shocking i'd say :-)
I guess i am asking the wrong questions...i was more interested in how a
slot is found a.k.a looked up at run time...not how they *work* or how they
are *used* or their *syntax*...the documentation is as i (and every body
else ) pointed out earlier, pretty clear about this.
-sarvesh
On Mon, Mar 14, 2011 at 2:17 PM, Arnold Krille <arnold at arnoldarts.de> wrote:
> Hi,
>
> On Sunday 13 March 2011 19:00:34 sarvesh saran wrote:
> > I have been a Qt programmer for quite some time now and i understand most
> > of the general features of Qt. I am still confused about how signals and
> > slots work...
>
> It amazes me how someone can use Qt for longer time and not understand
> signals/slots. That is one of the first things to learn…
>
> > this is what i know (correct me if i am wrong)
> >
> > 1. slots are like ordinary member functions.however they can be called
> > via signals irrespective of their access specifier.
>
> Yes, slots are ordinary function, no, 'calling' them from signals can not
> invalidate access specifiers.
>
> > 2. emit is a macro that expands to nothing.
>
> Correct, it helps the eye of the developer.
>
> > 3. when you write emit mysignal() you are just calling a function
> called
> > mysignal which has been implemented in the generated moc file.
>
> Correct. The secret lies within this function: It checks the connection
> list
> which slots are connected and will be executed. Furthermore it has a
> connection-type (Direct, Queued or auto) which helps deciding which slot to
> call in what way:
> - Direct connections and auto-connections with receivers in the same
> thread
> are executed directly.
> - Queued connections and auto-connections with receivers in another thread
> are converted to events ("call that slot with these arguments") and will
> then
> execute when the receivers event-loop allows.
>
> > 4. for every object (instantiated from a class containing Q_OBJECT
> macro
> > and inheriting QObject) an addition meta object is instantiated ?
> > 5. QT stores the names slots and signals of an object in its meta
> > object? in what format.....<name,function pointer> ?
>
> What these MetaObjects do and contain is mostly an implementation-detail to
> make things work. It doesn't really affect how you use signals and slots.
>
> > 6. connections between objects are made at runtime...how?? not sure
> how
> > and where a slot is searched for....
>
> You should have heard about how connections between signals and slots (and
> connections between signals and signals!) are made. In case you missed it,
> QObject has this nice connect(…)methods…
>
> > 7. but the arguments in the connect call are matched at compile time?
>
> No, at runtime.
>
> > 8. while connecting, only the arguments of the slot is
> checked...surplus
> > arguments are discarded.
>
> yep, that allows for buttons to emit "clicked(bool state)" and be usable
> for
> slots like "btn_clicked(bool state)" and "btn_clicked()" at the same time.
>
> > 9. SIGNAL and SLOT are macros......not sure what their purpose is....
>
> When you look at the documentation (oh, I said it) of QObject, you will
> notice
> that the arguments to connect are "QObject*, const char*, QObject*, const
> char*". The macros SIGNAL and SLOT "just" convert whatever you give them
> into
> a string that QObject::connect can understand.
>
> > i tried to look into the generated moc file but things are still
> murky..any
> > help will be greatly appreciated.
>
> Don't look at a moc-file unless you know about the internal ways of the Qt
> Metaobject system and want to debug a problem.
>
> Generally speaking: Instead of looking at the code, you would have learned
> more with looking at the documentation.
>
> Have fun,
>
> Arnold
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110314/aaa35271/attachment.html
More information about the Qt-interest-old
mailing list