[Interest] Best way to QObject-wrap simple objects

Samuel Gaist samuel.gaist at edeltech.ch
Tue Feb 19 14:24:44 CET 2013


Hello,

IIRC you don't,

You have to Q_DECLARE_METATYPE your POD, qRegisterMetaType it and maybe (depends on your use case) add the in/out stream operators (only if you need to load and store in a QVariant).

Hope it helps

On 19 févr. 2013, at 14:19, K. Frank wrote:

> Hello List!
> 
> Sometimes I have a simple class, maybe a POD, that I want to
> pump through a queued signal-slot connection.  As I understand
> it, I need a QObject to do that.  So I wrap my class in QObject.
> 
> What are some good idioms for this?  What is the most parsimonious
> approach?
> 
> Here's one method I've used:
> 
> 
> wrapped_pod.h:
> 
>   #include "pod.h"
>   #include <QObject>
>   #include <QMetaType>
> 
>   class WrappedPOD : public QObject, public POD {
>      Q_OBJECT
>      public:
>         WrappedPOD() {}
>         WrappedPOD (const WrappedPOD &wp) : POD(wp) {}
>         WrappedPOD (const POD &p) : POD(p) {}
>        ~WrappedPOD() {}
> };
> 
> 
> (A comment:  I was a little surprised that I seem to need to define
> the constructors.  I would have thought that the c++ defaults would
> have sufficed.)
> 
> Any thoughts on other, better ways to achieve this goal?  Or is there
> an approach I can use that avoids wrapping the object in the first place?
> 
> I imagine that this is not an uncommon need, so I imagine that there
> is some standard practice I can learn from.
> 
> 
> Thanks.
> 
> 
> K. Frank
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest




More information about the Interest mailing list