Проблема почти наверняка в том, что вы не компилируете или не создаете ссылки в сгенерированном файле moc_AddressBook.cpp. (Он должен был быть сгенерирован для вас - вы запускаете Qt moc
в своем коде перед компиляцией, верно?)
Чтобы ответить чуть более подробно, макрос Q_OBJECT
сигнализирует инструмент Qt's moc
, чтобы создать дополнительный файл реализации, содержащий код, необходимый для поддержки метаинформационной системы QObject
. Если бы у вас были какие-либо сигналы или слоты, они бы тоже кое-что сделали.
Альтернативным решением может быть удаление макроса Q_OBJECT
. Вы, вероятно, не хотите этого делать, но это помогло бы решить проблему, и это не является строго обязательным для представленного вами кода.
Также я бы отметил, что ваша строка:
#include "addressbook.h"
Вероятно, должно быть:
#include "AddressBook.h"
в зависимости от того, как вы представили имена файлов в вопросе.