Если класс с макросом Q_Object объявить перед main.cpp - то компилятор выдаст ошибку "undefined reference to ‘vtable ...".
Это происходит потому, что moc-препроцессор не обрабатывает cpp а обрабатывает только h. Соответственно проблема решается грамтоным размещением объявления класса с макросом в h-файле, а тела класса - в cpp. Все мои классы я так и делаю.
Однако я создаю собственную библиотеку примеров кода, на которой показываю использование тех или иных языковых элементов и классов.
И для неё крайне нежелательно создавать класс в отдельном файле - пропадает наглядность, и вообще не удобно. Я пытался обмануть qmake, включая HEADERS += main.cpp - но это не работает.
По-сути класс мне нужен только для того чтобы в него запихнуть слоты и показать примеры работы сигналов.
Вижу следующие пути решения проблемы:
- Заставить qmake обрабатывать мой cpp файл каким-то образом, вот только каким?
- Соединить сигналы с обычными функциями, только помойму это не возможно сделать. Можно ли как-то отследить сигналы без слотов?