[Interest] Q_DECLARE_SMART_POINTER_METATYPE type restriction

Thiago Macieira thiago.macieira at intel.com
Tue Jan 28 23:55:42 CET 2020

On Tuesday, 28 January 2020 12:59:04 PST joel at embedded.pro wrote:
> For this, I've been looking at Q_DECLARE_SMART_POINTER_METATYPE. The 
documentation has the following to say about this macro:
> >> This macro makes the smart pointer SmartPointer known to QMetaType as a
> >> smart pointer. This makes it possible to put an instance of
> >> SmartPointer<T> into a QVariant, if T is a type which inherits QObject.
> I'd be interested to know why T would be restricted to a type which inherits
> QObject.
> Can anybody enlighten me?

The point of the feature is to teach QVariant how to recognise QObject 
pointers and provide the rest of the QObject-like API.

If your type does not derive from QObject, don't use this macro. Register your 
smart pointer instantiation like any other class.

Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products

More information about the Interest mailing list