Qt - no hay tal error de señal

Estoy tratando de activar una señal cuando ocurre un doble clic en uno de los widgets arrastrables en elejemplo de imanes de nevera. Aquí están los cambios que hice en la fuente de ejemplo:

DragLabel:

class DragLabel : public QLabel
{
public:
    DragLabel(const QString &text, QWidget *parent);
    QString labelText() const;

public slots:
    void testSlot(){qDebug()<<"testSlot";}    //<-- implemented this slot

protected:
    void mouseDoubleClickEvent(QMouseEvent *ev){emit testSignal();}    //<-- overriden this method

private:
    QString m_labelText;

signals:
    void testSignal();    //<-- added this signal

};

Lo único que cambié en el archivo de implementación es agregarconnect(this,SIGNAL(testSignal()),this,SLOT(testSlot())); al constructor de DragLabel.

Intentar compilar el proyecto resultó en 'referencia indefinida a `DragLabel :: testSignal ()'y'collect2: ld devolvió 1 estado de salida'errores.

Cuando comento la llamada a la señal, se compila y se ejecuta, pero emite 'Object :: connect: No existe tal señal QLabel :: testSignal () en draglabel.cpp'advertencia en la salida de la aplicación. Aparentemente, testSignal () no se reconoce como una señal.

Intenté agregar la macro Q_OBJECT a DragLabel pero resulta en 4 'referencia indefinida a `vtable para DragLabel ''advertencias y a'collect2: ld devolvió 1 estado de salida'error.

¿Qué me estoy perdiendo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta