Каково значение Q_PROPERTY в Qt?

Я не могу понять использование Q_PROPERTY. Как Q_PROPERTY помогает сделать программу защитой? Для чего его используют? Я видел форум, но на самом деле не смог его применить. Я понял этот пример, но не его использование.

Вот пример, что я получу с ним. Я понимаю, что чтение даст привилегию только для чтения.

Свойство write даст привилегию писать только. Но в чем его потребность? Может ли кто-нибудь продемонстрировать это?

 class MyClass : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged)
     Q_ENUMS(Priority)

 public:
     MyClass(QObject *parent = 0);
     ~MyClass();

     enum Priority { High, Low, VeryHigh, VeryLow };

     void setPriority(Priority priority)
     {
         m_priority = priority;
         emit priorityChanged(priority);
     }
     Priority priority() const
     { return m_priority; }

 signals:
     void priorityChanged(Priority);

 private:
     Priority m_priority;
 };

Ответ 1

Он имеет следующие преимущества:

  • Он доступен для системы метаобъектов, поэтому его можно интродуцировать, использовать из QML и т.д.

  • У него есть дополнительные возможности, чем просто читать и писать. Посмотрите на уведомления, reset и т.д. Также проще интегрировать их в QtCreator (конструктор).

  • Вам не нужно писать шаблон с Qt 5.1 в общих случаях чтения и записи, потому что они будут созданы для вас.