Ошибка неопределенного эталонного линкера с сигналами и слотами

StackOverflow https://stackoverflow.com/questions/3011075

Вопрос

Используя QT Creator, я создаю класс с пользовательскими слотами в Qt:


class CustomEdit : public QTextEdit
{
    Q_OBJECT

public:
    CustomEdit(QWidget* parent);

public slots:
    void onTextChanged ();
};

Тем не менее, я получаю эту ошибку линкера:

undefined reference to 'vtable for CustomEdit'

Документация говорит:

Если вы получаете ошибки компилятора вдоль линий «неопределенной ссылки на VTable для LCDNumber», вы, вероятно, забыли запустить MOC или включить вывод MOC в команде ссылки.

... Но это не очевидно, что это значит.

Есть ли что-то, что мне нужно добавить в мой класс, или в файл .pro?

РЕДАКТИРОВАТЬ - Вот мой файл .PRO:

Qt + = Network  Script  webkit  xml target = myapp template = Источники приложений + = main.cpp  mainwindow.cpp  shadowdit.CPP заголовки + = mainwindow.h  shadowedit.h Формы + = mainwindow.ui

РЕДАКТИРОВАТЬ:

Этот вопрос Справляются с теми же проблемами, но ответы не устраивают, как я могу исправить эту проблему в Qt Creator. Нужно ли явно добавить файл MOC-Genered .CPP в мой список файлов, которые будут связаны? Это похоже на боль.

Это было полезно?

Решение

QT Creator - это IDE, которая используется для создания ваших проектов QT. Это все. Но qmake позволяет вам погасить проект. От Руководство QMake,

qmake автоматизирует генерацию makefiles так, что требуется только несколько строк информации для создания каждого Makefile. qmake генерирует makefile на основе информации в файле проекта. QMake содержит дополнительные функции для поддержки разработки с QT, автоматически включающей правила сборки для MOC и UIC.

Вам не нужно включать ваши файлы MOC отдельно, но вам нужно запустить qmake, которая содержит всю информацию о необходимых файлах MOC. Посмотрите на сгенерированный Makefile.debug или Makefile.release После Qmake и вы можете найти все файлы MOC для вас.

Теперь, чтобы запустить QMake в Qt Creator, просто перейдите к Build->RebuildAll Которые будут запускать Qmake и все файлы (MOC) будут сгенерированы и связаны (в makefile.debug) также.

Надеюсь, это будет эмиматно вашу неопределенную ссылку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top