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

Jason H scorp1us at yahoo.com
Thu Feb 13 21:19:13 CET 2014


Thanks for the input.

I'm just using ints for now but I would love to have it a proper enum because of the information conveyed.


________________________________
From: Alan Ezust <alan.ezust at gmail.com>
To: Jason H <scorp1us at yahoo.com> 
Cc: Interests Qt <interest at qt-project.org> 
Sent: Thursday, February 13, 2014 1:38 PM
Subject: Re: [Interest] Using another Class's enum in your class



(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
>



More information about the Interest mailing list