c++ - ¿Cuál es el significado de Q_PROPERTY en Qt?
qobject qt-signals (1)
No puedo entender el uso de Q_PROPERTY. ¿Cómo ayuda Q_PROPERTY a hacer un programa defensivo? ¿Para qué se usa esto? He visto el foro, pero realmente no puedo hacer su aplicación. He entendido el ejemplo, pero no es su uso.
Aquí está el ejemplo, ¿qué gano con él? Entiendo que leer dará un privilegio de solo lectura.
La propiedad de escritura le dará el privilegio de escribir solamente. Pero ¿cuál es la necesidad de ello? ¿Alguien puede ejemplificarlo?
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;
};
Tiene las siguientes ventajas:
Está disponible para el sistema de objetos meta, por lo que se puede realizar una introspección, se puede usar desde QML, etc.
Tiene más opciones que leer y escribir. Observe notificar, reiniciar, etc. También es más fácil integrarlos en QtCreator (diseñador).
No es necesario que escriba la plantilla con Qt 5.1 en adelante en los casos comunes de lectura y escritura, ya que se generarán para usted.