LINUX.ORG.RU

Не компиллирутется программа C++ qt

 ,


0

1

Для проверки сигналов и слотов достал (почти полностью скопировал с документации) небольшую программку. Но у меня она не заработала, говоря что не видит vtable. Я не понимаю что она хочет, поэтому прошу Вас помочь.

Программа и результат компиляции: https://pastebin.com/b1LJ2JFa

Спасибо!

Установи qtcreator и сделай там проект! Сигналы слоты будут работать там где в хидере есть макрос Q_OBJECT у класса. Это я к тому что в main.cpp файле шаблона Console Application они просто так не сработают.

Вобщем ставь qtcreator и используй qmake систему сборки она проще для старта чем cmake.

bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 1)

Нельзя просто так взять и скомпилять Qt приложение. Любой хедер, где используется макрос Q_OBJECT, нужно сначала прогнать через кодогенератор moc. На выходе получится сгенеренный C++ файл с дополнительным кодом, нужным для работы сигналов/слотов. Этот сгенеренный файл нужно скомпилить вместе с main.cpp. Только тогда все заработает. Всю сборку можно написать на голых мейкфайлах, но это сложнее. Пока нет опыта с культями - лучше даже и не лезь в мейкфайлы и moc. Используй Qt Creator, который все сделает сам за тебя.

Посему как уже говорили предыдущие ораторы - выкинь мейкфайлы. Поставь Qt Creator. Создай там консольное приложение. Должен получиться простейший проект с .pro файлом и main.cpp. Вынеси класс Counter в отдельные файлы counter.cpp и counter.h. Добавь их в проект и собери все в культекреаторе. Должно заработать. И на будущее - лучше ищи полные примеры вместе с их .pro файлами, а не отрывки кода.

archie ()
Ответ на: комментарий от archie

Да, я создаю проекты в qtcreator, компиляю qmake’oм и потом уже исполняю сгенирированный makefile. Оказалось, что проблема в console application. Переписал с галочкой qt widgets и заработало.

Полных примеров в документации нет, или во всяком случае, я не вижу.

Спасибо.

jhonathan ()
Ответ на: комментарий от jhonathan

У тебя будут постоянно возникать подобные вопросы до тех пор, пока ты не освоишь процесс компиляции и сборки. И в особенности данные процессы применительно к Qt. В книге Шлее это более-менее описано. Советую прочитать ее полностью, тогда 90% твоих последних тем с вопросами отпадут сами собой.

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

Вобщем ставь qtcreator и используй qmake систему сборки она проще для старта чем cmake.

Оно то может и проще. Но я рекомендую сразу учить CMake. Т.к. он используется в большинстве новых проектов. А шаблон CMakeLists.txt файла для простого проекта на Qt очень мал и генерируется автоматически в Qt Creator.

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

Полных примеров в документации нет, или во всяком случае, я не вижу.

Полные примеры есть, но не для основ Qt Core к сожалению. Когда доберешься до виджетов, то будет проще, для них есть куча примеров. Вот скажем пример тетриса. Сначала там разбираются отдельные фрагменты кода, а в самом конце идет ссылка Example project @ code.qt.io на гит репу с полным кодом. В этой же репе лежат и остальные примеры.

archie ()