[Interest] Using another Class's enum in your class

Alan Ezust alan.ezust at gmail.com
Thu Feb 13 19:38:14 CET 2014


(crickets chirp)

I was wondering if anyone was going to tackle this. It's a question I often
asked. And in finding an answer, I looked at the Qt source code. Which may
have been a bad idea.

With the exception of the "Qt" namespace, that's what Qt does itself, using
int instead of the
enum from another Q_OBJECT class.

The way Qt put Q_ENUMS into the Qt namespace is by pretending it is a
QObject when moc processes it and pretending it is a namespace when it is
compiled by the compiler. Which is a bit of a hack.

Another idea is to put all the Q_ENUMS in the most basey of base classes
and have all of your other classes inherit from that class and then you can
use the Q_ENUM in all the derived types.

I ended up writing my own Enum class that converts to/from int and QString
and using that instead of Q_ENUMS for these kind of situations.

I don't know the best answer to your question. I was hoping someone else
would say something.


On Wed, Feb 12, 2014 at 6:38 AM, Jason H <scorp1us at yahoo.com> wrote:

> The Q_ENUMS() macro will do what I want -- for QObject derived class
> enums. But what does one do about an enum that is not QObject derived?
>
>
>
> Q_PROPERTY(int/*QImage::Format*/ imageFormat READ imageFormat WRITE
> setImageFormat); //works
> Q_PROPERTY(QImage::Format imageFormat READ imageFormat WRITE
> setImageFormat) //causes bad moc code
> ---bad code--------
> static const QMetaObject*qt_meta_extradata_VideoSurface[]={
> &QImage::staticMetaObject, // "staticmetaObject is not a member of QImage"
> 0
> };
> -------------------------
>
> For now I'm just using an int. What should I be doing?
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140213/236d2042/attachment.html>


More information about the Interest mailing list