Подтвердить что ты не робот

Почему Qt ищет мой слот в базовом классе вместо производного?

У меня есть класс X, который наследуется от Qt class Base. Я объявил и определил слот void mySlot() в моем классе X, и я подключаю некоторый сигнал к этому слоту в конструкторе X. Однако при запуске моей программы я получаю сообщение об ошибке, в котором нет такого слота, как void mySlot() в классе Base.

Почему код, сгенерированный Meta Object Compiler (moc), ищет мой слот в базовом классе, а не в моем (производном) классе?

4b9b3361

Ответ 1

Вы добавили макрос Q_OBJECT в производный класс?

Ответ 2

От канала #qt irc

  • Убедитесь, что макрос Q_OBJECT присутствует в определении всех классов, полученных из QObject.
  • Обязательно объявляйте свои классы, полученные из QObject, в ваши файлы заголовков ТОЛЬКО.
  • Убедитесь, что все ваши файлы заголовков указаны в вашем файле .pro в списке HEADERS =.
  • Запустите qmake каждый раз, когда вы добавляете Q_OBJECT в один из ваших классов или изменяете свой .pro файл.