Вам нужна строка внизу исходного файла:
#include "main.moc"
Это потому, что объявление class Thread
находится не в заголовке, а в файле .cpp. По умолчанию moc
не будет работать на нем. Добавление строки делает две вещи:
- сообщает
qmake
и moc
, что moc
должен обработать файл .cpp
- это заставляет материал, который генерируется
moc
, извлекаться на этапе компиляции
Итак, после добавления этой строки вам нужно будет перезапустить qmake
, чтобы он мог обновить make-файлы, чтобы генерировать main.moc
.
Обычно moc
работает с заголовочными файлами и создает файлы .cpp, которые включаются в сборку (qmake
следит за этим). Этот «трюк» заставляет moc
также запускаться для файла .cpp в вопросе (и иметь скомпилированный сгенерированный код moc
).
Альтернативой включению main.moc
в конце main.cpp
является перемещение определения class Thread
в файл заголовка .h и #include
что. Если определение находится в заголовке qmake
и moc
должны обрабатывать вещи автоматически.