Qt: Sistema de propiedades…
Las librerías Qt proporcionan un sistema de propiedades similar al sistema de propiedades que ofrecen las VCL de Borland, por ejemplo. Sin embargo, mientras que otros fabricantes utilizan directivas de compilador para la definición de propiedades, Qt lo delega en su sistema de Meta Objetos (del que hablaré un día de estos).
¿Qué son las propiedades? Imaginemos un objeto, (en Qt cualquier clase que implementa la directiva del sistema de Meta Objetos Q_OBJECT). El objeto puede ser un objeto a utilizar en la GUI, o bien cualquier otro tipo de objeto. Una propiedad viene a tener un comportamiento muy parecido a los atributos de la clase, pero dispone de ciertas características adicionales. La principal (o la que por el momento me ha resultado más útil), puede accederse a la propiedad sin conocer la propia clase que implementa el objeto en sí.
¿Qué significa eso de sin conocer la clase?
Veamos este código
QComboBox *combo = new QComboBox;
QObject *miObjeto = combo;
int index = combo->currentIndex(); // Esto hace lo mismo que la sentencia de abajo
int index2 = miObjeto->property("currentIndex"); // Aqui, index2 tiene el mismo valor que index
Es decir, accedo al atributo que me da el item seleccionado mediante "hardcode" con el método ->currentIndex, o bien, con ->property + un nombre que puedo leer de cualquier parte.
Imaginemos que de esta forma, podemos poblar todas las propiedades de un objeto (y por tanto sus atributos) a partir de un XML, que es básicamente lo que hacen las Qt con el QtDesigner...
¿Cómo se definen las propiedades? Mediante la macro..
p, li { white-space: pre-wrap; }
Q_PROPERTY(type name
READ getFunction
[WRITE setFunction]
[RESET resetFunction]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
[USER bool])
Buscaré un ejemplito práctico para verlo... pero por hoy, queda la reseña.
Sin trackbacks por el momento.
