2009-09-07 9 views
21

Tengo mi clase X que hereda de la clase de Qt Base. Decidí y definí la ranura void mySlot() en mi clase X y estoy conectando alguna señal a esta ranura en el constructor de X. Sin embargo, cuando ejecuto mi programa recibo un mensaje de error que dice que no hay un espacio como void mySlot() en la clase Base.¿Por qué Qt busca mi ranura en la clase base en lugar de la derivada?

¿Por qué el código generado por Meta Object Compiler (moc) busca mi ranura en la clase base y no en mi clase (derivada)?

Respuesta

45

¿Agregó la macro Q_OBJECT en la clase derivada?

6

De qts canal de IRC

  1. Asegúrese de que la macro Q_OBJECT está presente en la definición de todas las clases derivadas de QObject.
  2. Asegúrese de declarar SOLAMENTE las clases derivadas de QObject en sus archivos de encabezado.
  3. Asegúrese de que todos sus archivos de encabezado estén listados en su archivo .pro en la lista HEADERS =.
  4. Ejecute qmake cada vez que agregue Q_OBJECT a una de sus clases o modifique su archivo .pro.
Cuestiones relacionadas