Qual é o significado da propriedade Q no Qt?

Eu não sou capaz de entender o uso de Q_PROPERTY. Como é que a Q_PROPERTY ajuda a tornar um programa defensivo? Para que é utilizado? Eu vi o fórum, mas realmente não sou capaz de fazer o seu aplicaton. Eu entendi o exemplo, mas não é Uso.

Aqui está o exemplo, o que ganho com ele. Sei que a leitura dará apenas o privilégio de ler.

A propriedade de escrita dará o privilégio de escrever apenas. Mas qual é a necessidade disso? Alguém pode exemplificar aquilo?

 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;
 };
Author: lpapp, 2014-02-23

1 answers

Tem as seguintes vantagens:

  • Ele está disponível para o meta object system, então ele pode ser introspectado, usado a partir de QML etc.

  • Ele tem mais opções do que apenas ler e escrever. Olhe para notificar, reiniciar, etc. Também é mais fácil integrá-los no QtCreator (designer).

  • Você não precisa escrever o boilerplate com o Qt 5.1 em diante em casos comuns de leitura e escrita, porque eles serão gerados para você.

 10
Author: lpapp, 2014-02-24 11:57:05