LINUX.ORG.RU

Два Q_OBJECT'a.


0

0

Пишу не QT дизайнере (плз. не предлогать :) а в KDevelop.
Проблема с этим макросом. Т.е. я его разместил в том классе который который вызывает qt-ую функцию connect , т.е. макрос обьявлен в одном классе , и он как и положено не обьявлен в других. Так вот, есть другой класс в нём тоже надо сделать конект. Но обьявление этого макроса вызвало появление сообщщений:

ldmusers.o(.text+0x2f): In function `ldmUsers::ldmUsers[not-in-charge](QWidget*)':
/usr/qt/3/include/qobject.h:229: undefined reference to `vtable for ldmUsers'
ldmusers.o(.text+0x3b): In function `ldmUsers::ldmUsers[not-in-charge](QWidget*)':
/usr/qt/3/include/qstring.h:850: undefined reference to `vtable for ldmUsers'
ldmusers.o(.text+0x1a3): In function `ldmUsers::ldmUsers[in-charge](QWidget*)':
/home/alexandr/Documents/Coding/C++/MyProjects/ldm/src/ldmusers.cpp:23: undefined reference to `vtable for ldmUsers'
ldmusers.o(.text+0x1af):/home/alexandr/Documents/Coding/C++/MyProjects/ldm/src/l dmusers.cpp:23: undefined reference to `vtable for ldmUsers'
ldmusers.o(.text+0x2f3): In function `ldmUsers::~ldmUsers [not-in-charge]()':
/home/alexandr/Documents/Coding/C++/MyProjects/ldm/src/ldmusers.cpp:39: undefined reference to `vtable for ldmUsers'
ldmusers.o(.text+0x2ff):/home/alexandr/Documents/Coding/C++/MyProjects/ldm/src/l dmusers.cpp:39: more undefined references to `vtable for ldmUsers' follow
collect2: ld returned 1 exit status
make: *** [ldm] Ошибка 1


(ldmUser - второй класс содержащий обьявление макроса, ldmUserBlock - первый класс, как видно из лога у него проблемм нет)

но если убрать его то всё собирается нормально но запуск кончается сообщением об отсутствующем слоте

QObject::connect: No such slot QWidget::moveUsers()
QObject::connect: (sender name: 'unnamed')
QObject::connect: (receiver name: 'unnamed')

Но слот есть.
При чём эти же мессаги выскакивали и тогда когда этот макрос первый раз я обьявлял в первом классе, но убрать их получилось добавив в свойства проекта -lqt. Когда я добавлял второй раз этот максрос в другой класс, т.е. он обьявлен два раза, то получил указанные выше сообщения об ошибках undef'ов. Т.е. добавить вроде как и не знаю чего.

Как это исправить, т.е. что бы юзать этот макрос в нескольких классах?

Заранее спасибо!!!

★★★★★

у тебя, похоже, просто класс ldmUser мос-ом не обрабатывается

Vinill ★★
()
Ответ на: комментарий от cyclon

Короче сделал moc'и с помощью moc soome.h > some.moc и включил его в цппешник, после чего конект происходит только в первом классе а во втором при запуске вылезает это

bash-2.05b$ ./ldm
QObject::connect: No such slot ldmUsers::selectUsers()
QObject::connect: (sender name: 'unnamed')
QObject::connect: (receiver name: 'unnamed')
QObject::connect: No such slot ldmUsers::selectUsers()
QObject::connect: (sender name: 'unnamed')
QObject::connect: (receiver name: 'unnamed')
QObject::connect: No such slot ldmUsers::selectUsers()
QObject::connect: (sender name: 'unnamed')
QObject::connect: (receiver name: 'unnamed')

единственно что изменилось, так то что он не говорит QWidget а нормально пишет имя класса, но вот слот всёравно не видиться, но он есть!!!

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon


По-моему, в KDevelop есть поддержка .pro-файлов. Ну или там мастер должен быть для создания классов, унаследованных от QObject. В общем, эта проблема KDevelop уже. Ничем, к сожалению, помочь не могу.

ANDI ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.