Q_Object Macro y meta-object Code
Pregunta
Este enlace: http://doc.trolltech.com/4.5/moc.html#moc dice
La herramienta MOC lee un archivo de encabezado C ++. Si encuentra una o más declaraciones de clase que contienen la macro Q_Object, produce un archivo fuente de C ++ que contiene el código Meta-Object para esas clases.
¿Qué es un meta ¿código de objeto?
Edición 1
¿Cómo saber en qué clases debería escribir el Q_Object? Un ejemplo son las señales y las ranuras, ¿en cualquier otro caso en los que sea necesario utilizar?
Solución
Los meta objetos mejoran los lenguajes de programación creando nuevos o manipular objetos existentes. Proporcionan funcionalidades que un lenguaje en realidad no tiene en sí mismo. Los meta objetos se interpretan por tiempo de compilación o tiempo de ejecución. En Qt y C ++ se realiza durante el tiempo de compilación por el compilador de objetos meta (MOC).
Un caso de ejemplo es el uso del concepto de señal/ranura.
Otros consejos
Puedes leer el artículo QT -THERALS e invertir Para obtener un conocimiento profundo sobre QT y su compilador MOC (compilador Meta Objet). En resumen, un meta objeto es creado por el compilador MOC de QT para agregar información adicional a una clase como el mecanismo de señal/ranura, etc.
Un código de meta objeto en el entorno QT es un archivo fuente de C ++ que es una versión ampliada del archivo de origen C ++ donde ha puesto Q_Object (y/o otras macros relacionadas). El código de meta objeto tendrá su implementación más algún otro código adicional (meta) para que funcione el mecanismo de señal y ranuras.
Un meta-objeto contiene metainformación sobre un objeto como su nombre y una descripción textual de sus señales y ranuras. Esto hace posible llamar a la señal por "nombre". Ver la documentación sobre QmetaObject y esto artículo.