Qt «сигнализировать о неопределенной ошибке ссылки» после наследования от QObject

Недавно мне нужно было добавить сигнал в класс, поэтому я изменил класс для наследования от QObject и добавил макрос Q_OBJECT в определение класса. Так как я получаю msgstr «сигнализировать о неопределённой ошибке ссылки для ‘vtable for CLICommand'» ошибка в строке класса ниже:

// File clicommand.h
#include <QString>
#include <QStringList>
#include <QTcpSocket>
#include "telnetthread.h"class CLICommand : public QObject
{
Q_OBJECT
public:
CLICommand(TelnetThread *parentTelnetThread);
signals:
void signal_shutdown_request();
private:
TelnetThread *m_parentTelnetThread;

и вторая ошибка msgstr «сигнализировать о неопределённой ошибке ссылки для vtable for CLICommand» в строке ниже (инициализация переменной-члена):

// File clicommand.cpp
#include <QDebug>
#include <QTcpSocket>
#include <QTextStream>
#include "version.h"#include "clicommand.h"#include "telnetthread.h"#include "logger.h"CLICommand::CLICommand(TelnetThread *parentTelnetThread)
: m_parentTelnetThread(parentTelnetThread)
{
}

и именно здесь я излучаю сигнал. Линия выброса генерирует ошибку неопределенная ссылка на CLICommand :: signal_shutdown_request () ‘ :

// file shutdown_clicommand.cpp
#include <QIODevice>
#include "clicommand.h"#include "logger.h"#include "version.h"void CLICommand::execute_shutdown(const QStringList &commandLineFragments)
{
emit signal_shutdown_request();
}

Я прочитал кучу постов на эту тему, но ни один из них не подходит. Я даже пытался очистить / восстановить все. Я не использую boost или другие библиотеки … просто QT 5

Может кто-нибудь сказать мне, что я делаю не так?


РЕШЕНИЕ: в QT Creator щелкните проект правой кнопкой мыши, выберите RUN QMAKE, а затем перестройте все. Другие сообщения о запуске REBUILD ALL неверны … сами по себе, что не будет запускать qmake.

7

Решение

Вы должны убедиться, что moc (повторно) запускается для этих изменений. Кажется, что вы либо пропустили сгенерированный файл moc, либо он устарел и, следовательно, не содержит правильной ссылки на текущее состояние.

QtCreator не перезапускается qmake правильно, когда добавлен макрос Q_OBJECT. Это давняя проблема, поэтому вам нужно будет повторно запустить ее вручную.

https://bugreports.qt.io/browse/QTCREATORBUG-231

14

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]