[Qt-interest] Q_PROPERTY confusion

Colin Kern colin.kern at gmail.com
Mon Jun 22 04:13:49 CEST 2009


On Sun, Jun 21, 2009 at 7:07 PM, Bill KING<bill.king at trolltech.com> wrote:
> Scott Aron Bloom wrote:
>> the
>>
>>
>>> -----Original Message-----
>>> From: qt-interest-bounces at trolltech.com [mailto:qt-interest-
>>> bounces at trolltech.com] On Behalf Of Colin Kern
>>> Sent: Sunday, June 21, 2009 4:59 PM
>>> To: qt-interest at trolltech.com
>>> Subject: [Qt-interest] Q_PROPERTY confusion
>>>
>>> Hello,
>>>
>>> I'm confused about using the Q_PROPERTY macro.  I've read the page in
>>> the documentation, and it gives this example:
>>>
>>> class MyClass : public QObject
>>>  {
>>>      Q_OBJECT
>>>      Q_PROPERTY(Priority priority READ priority WRITE setPriority)
>>>      Q_ENUMS(Priority)
>>>
>>>  public:
>>>      MyClass(QObject *parent = 0);
>>>      ~MyClass();
>>>
>>>      enum Priority { High, Low, VeryHigh, VeryLow };
>>>
>>>      void setPriority(Priority priority);
>>>      Priority priority() const;
>>>  };
>>>
>>> One thing I notice is that both the member variable and the getter are
>>> called "priority".  Normally in C++, you get a naming collision if you
>>> try to make a member variable and member function the same name.  I
>>> notice, however, that the member variable isn't declared here.  The
>>> implementation of the getter and setter functions isn't given for this
>>> example, and I'm confused about how to write them.  If I try to do
>>> something like "this->priority = priority;" for the setter, or "return
>>> priority;" for the getter, I get errors indicating that the compiler
>>> thinks I am referring to the member function not the variable.  If I
>>> try to declare the Priority priority in the header file, I get errors
>>> about naming conflict as expected.  What is the proper way to do this?
>>>
>>> Thanks,
>>> Colin Kern
>>>
>>
>>
>> ------------
>> The name is NOT used as an actual object inside the class.. Its used by
>> the metaObject from TT..
>>
>> It's the key to the mapping system used to lookup the properties.
>>
>> Scott
>>
>>
>>
>>
>>
> Scott is correct here, it's used for the introspection functionality in
> Qt's meta system. The upside of that is that it automatically makes it
> ready for the scripting(/DUI) systems. (Ie, it describes this as a
> property, which in those systems, will act exactly like a smart member
> variable).
>
>
> --
> Bill King, Software Engineer
> Qt Software, Nokia Pty Ltd
> Brisbane Office
>
>

I understand now.  Thanks everyone!

Colin




More information about the Qt-interest-old mailing list