[Development] RFC: banning _q_slot() in favour of new-style connect()?

Marc Mutz marc.mutz at kdab.com
Fri Oct 12 17:54:53 CEST 2012

On Friday October 12 2012, Thiago Macieira wrote:
> > Not harder to use than Q_PRIVATE_SLOT, IMO. More annoying, yes, because
> > of boilerplate code (of which Q_PRIVATE_SLOT also has some, mind).
> > Real-life example:
> [snip]
> I'd rather explore options like what Olivier is proposing. The functors, as
> you showed, all need to keep a pointer to the original object, which
> QObjectPrivate already carries.

Yes, I like that interface better, too. However, the function pointers 
apparently cause a lot of extra text to be emitted which the functor version 
doesn't have because of inlining into the QSlotObjectBase (guessing here). In 
one version, I was able to _reduce_ the text size of the functor solution 
wrt. the original Q_PRIVATE_SLOT version.

If we could get the overhead of Olivier's interface down to zero or even 
negative (as proven possible), then I'd be all for it, but I think the 
penalty is too high with the current implementation, in particular if there 
are only a few slots in a class. The itemmodels change is a very favourable 
pick, I think, but still generates 5.5k of additional text, while 
saving "only" 2.5k of data:

   text    data     bss     dec     hex filename
4113990  125672    5240 4244902  40c5a6 lib/libQtCore-conn.so.5.0.0
4108452  128296    5240 4241988  40ba44 lib/libQtCore-orig.so.5.0.0

But removing the Compare operation (which will likely break disconnect?) and 
overloading connect() for presence of the fifth argument only reduces text 
size by 500 bytes, so I'm out of ideas.


Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
www.kdab.com || Germany +49-30-521325470 || Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-Independent Software Solutions

More information about the Development mailing list