Название: (Решено) проблема с сигналом Отправлено: chu от Май 24, 2013, 10:49 Объявляю в заголовке класса сигнал, вызываю его в теле одного из методов класса с помощью emit, но при сборке ошибка: undefined reference to myclass::my_signal (unsigned char*). Как такое возможно?
Название: Re: проблема с сигналом Отправлено: Странник от Май 24, 2013, 10:57 Объявляю в заголовке класса сигнал, вызываю его в теле одного из методов класса с помощью emit, но при сборке ошибка: undefined reference to myclass::my_signal (unsigned char*). Как такое возможно? приведите минимальный пример вашего кода, чтобы мы тут не гадали.Название: Re: проблема с сигналом Отправлено: xokc от Май 24, 2013, 10:59 Если всё-же погадать...
Если ничего не напутано с сигнатурой сигнала, то это значит, что moc не сформировал соответствующую обёртку над этим сигналом. Это может происходить, если: 1. Отсутствует макрос Q_OBJECT в классе с сигналом 2. Файл с описанием класса с сигналом не включён в проект 3. Описание класса делается в cpp файле. Название: Re: проблема с сигналом Отправлено: chu от Май 24, 2013, 11:12 Если всё-же погадать... Макрос Q_OBJECT присутствует в классе родителе (QGraphicsView, если добавить этот макрос в заголовок моего унаследованного класса появляется ошибка: undefined reference to vtable for MyClass. Что такое vtable я понятия не имеюЕсли ничего не напутано с сигнатурой сигнала, то это значит, что moc не сформировал соответствующую обёртку над этим сигналом. Это может происходить, если: 1. Отсутствует макрос Q_OBJECT в классе с сигналом 2. Файл с описанием класса с сигналом не включён в проект 3. Описание класса делается в cpp файле. Название: Re: проблема с сигналом Отправлено: chu от Май 24, 2013, 11:27 Файлы срр и h в проект добавлены через pri файл, по кнопке F2 (перейти к символу под курсором) из срр файла курсор перемещается в заголовочный к объявлению сигнала.
Название: Re: проблема с сигналом Отправлено: mutineer от Май 24, 2013, 11:34 Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты
чтобы убрать ошибку с vtable попробуй полностью пересобрать проект с нуля Название: Re: проблема с сигналом Отправлено: xokc от Май 24, 2013, 11:48 Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты Именно такНазвание: Re: проблема с сигналом Отправлено: GreatSnake от Май 24, 2013, 11:54 Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты Именно такQ_OBJECT должен быть в каждом классе, который хочет использовать свои сигналы-слоты Название: Re: проблема с сигналом Отправлено: chu от Май 24, 2013, 13:28 Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты Спасибо! чтобы убрать ошибку с vtable попробуй полностью пересобрать проект с нуля Помогло, заработало! |