![]() |
|
![]() ![]() ![]() |
|
Filin88 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
Здравствуйте!
В связи с расширением кода проекта с применением библиотеки QT 4.8, возникла необходимость разбить один файл .cpp на несколько и связать их одним файлом .h, и тут понеслась... Нужно, чтобы описание всех классов и структур данных было в .h файле, но начал ругаться линковщик. Оно и понятно, Q_Object и сигналы-слоты почти во всех классах, а строка "#main.moc" находится в конце главного файла main.cpp. Всего в проекте 4 файла .cpp и 1 .h. Можете подсказать, как разрулить это недоразумение? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Да не нужно этой строки нигде.
- Все классы с сигналами/слотами должны находиться в заголовках. - Заголовки с такими классами должны быть объявены в проекте, остальные заголовки объявлять не обязательно. Для таких заголовков будеть создваться moc_ файл, который будет вслючен в линковку отдельно. - Классы, которые используются в одном .cpp, но не имеют новых сигнаов/слотов (макрос Q_OBJECT не применяется) могут быть объявлены в этом .cpp |
|||
|
||||
Filin88 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
Дело в том, что я уже использую QTService, а не пишу с нуля. В их исходниках файл .moc подключается, так что без него не обойтись. Пытаюсь подключить по аналогии, но не выходит.
Убрал все описания классов с Q_OBJECT в zagolovok.h, и теперь вместо main.moc он генерит moc_zagolovok.cpp. Пытался и его цеплять, но линковщик все равно ругается Это сообщение отредактировал(а) Filin88 - 23.9.2014, 09:28 |
|||
|
||||
math64 |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Всё таки придётся изменять их исходники.
Или испльзовать превдоразбиение, когда в main.cpp:
class1.cpp и class2.cpp в проект не включаются. Но так некрасиво. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |