Вызов метода по таймеру в Qt

Использую Qt5. Пытаюсь сделать вызов метода checkAvailableInterfaces() по таймеру, написал следующий код:

class InterfaceController : public QObject
{
public:
    explicit InterfaceController(QObject *parent = nullptr);

public slots:
    void        checkAvailableInterfaces();

public:
    QTimer      *checkAvailableInterfacesTimer;
};

InterfaceController::InterfaceController(QObject *parent) : QObject(parent)
{
    Logger::writeLogInfo("InterfaceController has been started.");

    checkAvailableInterfacesTimer = new QTimer(this);

    connect(checkAvailableInterfacesTimer, SIGNAL(timeout()),
            this, SLOT(checkAvailableInterfaces()));

    checkAvailableInterfaces();

    checkAvailableInterfacesTimer->start(3000);
}

void InterfaceController::checkAvailableInterfaces()
{
    Logger::writeLogInfo("Run checkAvailableInterfaces()");
}

Всё компилится, но когда доходит до этого метода, то получаю следующий вывод:

[2022-06-17 13:09:23.818] [info] InterfaceController has been started.
[2022-06-17 13:09:23.818] [info] Run checkAvailableInterfaces()
QObject::connect: No such slot QObject::checkAvailableInterfaces() in /home/gleb/Codes/pcpp_monitor/backend/interfacecontroller/interfacecontroller.cpp:14

В чем может быть проблема?

upd

При добавления макроса Q_OBJECT выдает следующее:

/usr/bin/ld: interfacecontroller/libinterfacecontroller.a(interfacecontroller.cpp.o): in function `InterfaceController::InterfaceController(QObject*)':
/home/gleb/Codes/pcpp_monitor/backend/interfacecontroller/interfacecontroller.cpp:7: undefined reference to `vtable for InterfaceController'
collect2: error: ld returned 1 exit status
gmake[3]: *** [CMakeFiles/pcpp_monitor_backend.dir/build.make:119: pcpp_monitor_backend] Error 1
gmake[3]: Leaving directory '/home/gleb/Codes/pcpp_monitor/backend/cmake-build-debug'
gmake[2]: *** [CMakeFiles/Makefile2:162: CMakeFiles/pcpp_monitor_backend.dir/all] Error 2
gmake[2]: Leaving directory '/home/gleb/Codes/pcpp_monitor/backend/cmake-build-debug'
gmake[1]: *** [CMakeFiles/Makefile2:169: CMakeFiles/pcpp_monitor_backend.dir/rule] Error 2
gmake[1]: Leaving directory '/home/gleb/Codes/pcpp_monitor/backend/cmake-build-debug'
gmake: *** [Makefile:118: pcpp_monitor_backend] Error 2

Ответы (1 шт):

Автор решения: Alexander Chernin

Надо подключить макрос Q_OBJECT

class InterfaceController : public QObject
{
    Q_OBJECT // <--

После чего надо очистить проект и пересобрать

→ Ссылка