Russian Qt Forum
Ноябрь 24, 2024, 15:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: (Решено) проблема с сигналом  (Прочитано 3733 раз)
chu
Гость
« : Май 24, 2013, 10:49 »

Объявляю в заголовке класса сигнал, вызываю его в теле одного из методов класса с помощью emit, но при сборке ошибка:  undefined reference to myclass::my_signal (unsigned char*). Как такое возможно?
« Последнее редактирование: Май 24, 2013, 13:29 от chu » Записан
Странник
Гость
« Ответ #1 : Май 24, 2013, 10:57 »

Объявляю в заголовке класса сигнал, вызываю его в теле одного из методов класса с помощью emit, но при сборке ошибка:  undefined reference to myclass::my_signal (unsigned char*). Как такое возможно?
приведите минимальный пример вашего кода, чтобы мы тут не гадали.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #2 : Май 24, 2013, 10:59 »

Если всё-же погадать...

Если ничего не напутано с сигнатурой сигнала, то это значит, что moc не сформировал соответствующую обёртку над этим сигналом. Это может происходить, если:
1. Отсутствует макрос Q_OBJECT в классе с сигналом
2. Файл с описанием класса с сигналом не включён в проект
3. Описание класса делается в cpp файле.
Записан
chu
Гость
« Ответ #3 : Май 24, 2013, 11:12 »

Если всё-же погадать...

Если ничего не напутано с сигнатурой сигнала, то это значит, что moc не сформировал соответствующую обёртку над этим сигналом. Это может происходить, если:
1. Отсутствует макрос Q_OBJECT в классе с сигналом
2. Файл с описанием класса с сигналом не включён в проект
3. Описание класса делается в cpp файле.
Макрос Q_OBJECT присутствует в классе родителе (QGraphicsView, если добавить этот макрос в заголовок моего унаследованного класса появляется ошибка: undefined reference to vtable for MyClass. Что такое vtable я понятия не имею
Записан
chu
Гость
« Ответ #4 : Май 24, 2013, 11:27 »

Файлы срр и h в проект добавлены через pri файл, по кнопке F2  (перейти к символу под курсором) из срр файла курсор перемещается в заголовочный к объявлению сигнала.
Записан
mutineer
Гость
« Ответ #5 : Май 24, 2013, 11:34 »

Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты

чтобы убрать ошибку с vtable попробуй полностью пересобрать проект с нуля
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #6 : Май 24, 2013, 11:48 »

Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты
Именно так
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Май 24, 2013, 11:54 »

Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты
Именно так
Не совсем так)
Q_OBJECT должен быть в каждом классе, который хочет использовать свои сигналы-слоты
Записан

Qt 5.11/4.8.7 (X11/Win)
chu
Гость
« Ответ #8 : Май 24, 2013, 13:28 »

Q_OBJECT должен быть в каждом классе, который хочет использовать сигналы-слоты

чтобы убрать ошибку с vtable попробуй полностью пересобрать проект с нуля
Спасибо!
Помогло, заработало!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 22.