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

Я не могу понять использование Q_PROPERTY. Как th 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 и т. Д.

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

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

Другие вопросы по тегам