powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt и QMainWindow
20 сообщений из 20, страница 1 из 1
Qt и QMainWindow
    #34538971
пионер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал изучать Qt. Скачал opensource'cную версию, собрал (под Windows, mingw). Пишу в Dev-cpp. Стал переписывать примеры из туториала. Все OK.

Но когда, дело дошло до создания меню и соответственно использования QMainWindow начались проблемы. Дело в том, что я создал потомка MainWindow, и когда я в нем пишу макрос Q_OBJECT
при линковке выдается сообщение "не обнаружена vtable для MainWindow"

В тоже самое время, если собирать проект ручками, т.е.
Код: plaintext
1.
2.
3.
qmake -project
qmake
mingw32-make

проект собирается. Ошибок нет.

Судя по всему недостает обработки текста программы утилитой moc. Но как её задействовать в Dev-cpp? Не знаю.

Или может быть дело вообще не в этом?
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34539026
Boltov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело скорее всего в настройках целей по умолчанию make в dev-cpp.
если бы moc не отрабатывал - проект бы не собирался вообще. Это можно проверить - в папке debug (или release) после сборки появляется файл moc_имя_исходника.cpp
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34539084
пионер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, дело в том что из dev-cpp проект не собирается (ошибка при линковке) и moc_имя_исходника.cpp не появляется. Зато если ручками собирать, то он появляется.

При создании проекта в dev-cpp я указал лишь, где лежат инклуды qt и либ-файлы. А как заставить работать moc?
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34539387
Boltov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у тебя в PATHе прописан путь к бинам QT?
если да, то давай по порядку.

qmake -project формирует *.pro файл
qmake на основе *.pro и твоих исходников делает Makefile
mingw32-make собирает

вызов moc указывается в Makefile. Он-то у тебя создается в dev-cpp?
Если да, то сравни полученные вручную Makefile (Makefile.Debug, Makefile.Release) и из dev-cpp.

P.S. в dev-cpp разве никак нельзя указать программу и параметры сборки? Например mingw32-make debug
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34540431
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qmake -project
надо сделать только ОДИН раз за всю жизнь проекта. Потом вручную править pro файл.

moc запустится тогда и только тогда, когда в pro файле есть строка типа.
HEADERS = myapp.h firstframe.h secondframe.h

А вообще, поковырявшись со связкой QT плюс Dev-C++, я убил Dev-C++ :)
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34554413
Фотография tAZAR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного поздно, но все равно отвечу. В настройках проекта в Dev-Cpp поставить галку use external makefile и указать makefile который генерит qmake...
Это приходится делать при каждом запуске dev-cpp... (по крайней мере у меня - бета)...
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34554627
пионер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tAZAR В настройках проекта в Dev-Cpp поставить галку use external makefile и указать makefile который генерит qmake...


В итоге работаю без dev-cpp, ручками собираю. Пока устраивает, текст можно легко и в Fare писать.

Но вот что делать, когда понадобится дебаггер. Спасибо, попробую твой способ. Если не поможет, то вроде есть консольный дебагер. Только как им пользоваться.
Но все равно всем спасибо.
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34554717
Фотография tAZAR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пионерЕсли не поможет...
Поможет :-) только перед этим вычистите output дирриктории проекта, и заново запустите qmake, потом уже F9 в DEV-Cpp и все будет ок... жалко, правда, что он эту галку не сохраняет и приходится каждый раз при открытии проекта идти в его свойства и указывать makefile....
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34559342
m.djukic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
How to Install Qt 4.2.3 and Dev-C++


The complete guide to installing and using Qt 4.2.3 with Dev-C++ by Nick Manley

1.) Download and install Dev-C++. You can either use version 4.9.9.x or 5.0 (still beta). The setup should be just like any other windows program.
However, you must install to a location that does not contain spaces. I don't know why this issue still exists but trust me on it. I chose to
use C:\Dev-cpp\ for my location. (Download Dev-C++)

2.) Download and Install Qt 4.2.3 for Windows. We are going to be using the open source version. Your work must be published under the GPL if you are
going this route. I am not responsible if you break any license agree agreements. Download the .exe file and install it just like any other
application. Again, install it to a directory with no spaces. Such as C:\Qt\4.1\ which I believe is the default. Now it will ask for your
mingw32 location. Mingw is the compiler that Dev-C++ uses. Simply select your Dev-C++ directory (C:\Dev-cpp\) and do not select mingw after.
All you need to enter is the Dev-C++ path. (Download Qt 4.2.3 For Windows - GPL)

3.) Create the Qt template. Download the zip file that I have provided which contains the nessisary template files. The template was originally
created by Nicolas Joseph. He is french and so is his website so unless you speak french you may need to use a translator. But the credit
goes to him for the template files. Extract them to the Templates folder (C:\Dev-cpp\Templates\) and all should be dandy. (Download Qt 4.2.3
Template for Dev-C++)

4.) Add the libraries. Thankfully the template files do almost all the dirty work. However the library files seem to be left out, so we have
to add the manually. Start Dev-C++ and go to Tools->Compiler Options and then select the Directories tab. Then click the Libraries sub-tab.
Add the path to our Qt libraries (C:\Qt\4.2.3\lib), include (c:\Qt\4.2.3\include) for c and c++


5.) Congratulations! Everything should now be all set. Try compiling this sample application from Trolltech's tutorial. It should work perfectly.
(Qt 4.1 - Hello World!)

6.) Append to path (c:\Qt\4.2.3\bin) for dll's from qt.
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34641122
Гурман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шаблон от m.djukic дает возможность не править маршруты к библиотекам - но только если они 4.2.3

у меня 4.3.0 - пришлось поправить, правда сделал это прямо в шаблоне

а вот у меня в Dev-CPP 4.9.9.2 ключ внешнего Makefile и его имя СОХРАНЯЮТСЯ в проекте

итак, пошаговая последовательность стыковки получается такой:

- 1 раз скачать и распаковать в нужный каталог (<диск>:\<каталог Dev-CPP>\Templates) шаблон из предыдущего сообщения
- если установлен Qt не 4.2.3, то 1 раз открыть этот шаблон текстовым редактором и заменить все 4.2.3 на номер версии своего Qt
- 1 раз удалить из шаблона строки с gt_cpp.txt и main.cpp (см. далее)
- *** запустить Dev-CPP, создать новый проект, выбрать закладку GUI, в ней выбрать шаблон Qt
- если не удалить main.cpp, то в проекте создастся пустой main.cpp, которым можно нечаянно прибить свой main.cpp, если он уже существует в каталоге, куда сохраняется проект - если строку удалить, то проект получит один безымянный файл - можно его из проекта убрать
- добавить свои файлы исходников к проекту, создать нужные и т.д.
- зайти консолью в каталог с проектом и выполнить там последовательно

qmake -project
qmake

- зайти в свойства проекта и в управлении Make-файлами включить флажок use custom Makefile, выбрать ниже в поле Makefile.Debug или Makefile.Release, которые получатся после qmake (это придется делать каждый раз при переходе от отладочной версии к релизу)
- указать в настройках проекта каталоги вывода объектных файлов debug или release (это придется делать каждый раз при переходе от отладочной версии к релизу - и есессно надо будет еще включать-выключать параметры компилятора/настройки/компоновщик/генерировать отладочную информацию)
- нажать кнопку Компилировать и получить .exe (или не получить)

чтобы все работало, включая отладчик, НЕ ИСПОЛЬЗОВАТЬ РУССКИЕ БУКВЫ в названиях каких-либо файлов - если .exe имеет русские буквы в имени, то он не запускается ни в дебаг, ни в релиз варианте
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34642506
пионер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я, кстати, забил на DevCPP. Задолбало. Корявый он немного. А его отладка меня просто достала.

Пользуюсь теперь CodeBlocks. Никакого геммороя, просто подключил внешний makefile и все, зер гутт. Да и сам он приятнее выглядит, и удобнее, на мой взгляд.
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34643146
sergku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда давайте по порядку все... Ибо вопросов много, тем паче у тех, кто первый раз сталкивается. Скачиваем qt-win-opensource-4.3.0-mingw (например) запускаем его... он создает папку и просит указать компилятор, если стоит DEV-C++ то указываем папку
C:\Dev-Cpp\bin. затем там есть (в корне QT) configure.exe какие параметры там надо указывать? насколько я понял он все и прписывает?
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34643456
пионер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле в readme все расписано по шагам, но раз уж спросили.

конфигуратору лучше указать всего один параметр -platform. Если под винды и с mingw (в DevCPP например), то надо указать -platform win32-g++

С другими параметрами я бы не рекомендовал баловаться. Вроде как, ставиться всЁ по дефолту.
Я, по началу, пытался кое-чего отключить (ну там, только release ) для того чтобы уменьшить время сборки, но потом напарывался на неудобства, потому как в некоторых местах, или программах в исходинках предполагается, что у Вас установлено всё.

Поэтому не балуйтесь с параметрами, ставьте по дефолту. И, конечно, приготовьтесь, что ЭТО (сборка библиотеки) займет несколько часов( у меня заняло, где-то 3 часа, Pentium4 3.2)
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34643873
Гурман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по порядку:

- скачан и установлен Qt4 + MinGW, настроены переменные среды, проверена сборка release версий примеров при помощи простого make
- Qt4 пересобран с отладочной информацией (configure -debug), поскольку не отладочная версия библиотек в комплект не входит
- скачан и установлен Dev-Cpp для Win только IDE, без комплиятора - он автоматом подхватывает заранее правильно настроенный MinGW
- далее все, как в моем сообщении выше
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34643883
Гурман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читать "...поскольку отладочная версия библиотек в комплект не входит...
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34643896
Гурман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, разумеется, Qt4 сразу скачивался с бинарниками библиотек под винды - это исключает лишние шаги при установке
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34644003
Гурман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пионерА я, кстати, забил на DevCPP. Задолбало. Корявый он немного. А его отладка меня просто достала.

Пользуюсь теперь CodeBlocks. Никакого геммороя, просто подключил внешний makefile и все, зер гутт. Да и сам он приятнее выглядит, и удобнее, на мой взгляд.

Вроде там должен вскорости freeze выйти, будем его пробовать. Пользовать релиз 2005 года, после которого куча доработок прошла, не хочется.

А что слышно - под CodeBlocks плагина для Qt не предвидится откуда-нибудь?

И еще - для меня критична фича IDE, которую я сразу у DevCpp не увидел - просмотр блоков памяти с указанием типа данных, в котором надо показывать содержимое ячеек. Особенно с поддержкой указателей на функции. Есть такое в CodeBlocks?
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34644111
пионер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понял, что означает
"блоков памяти с указанием типа данных, в котором".

В CodeBlocks можно в watche'ре просматривать структуру объекта, через сам объект или указатель на него. Т.е. там рисуется дерево включений одного объекта в другой. По-моему этого в DevCpp нет.
Или вы про просмотр конкретного адреса памяти?
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34644247
Гурман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, как вариант - чтобы взять какой-то произвольный адрес, заданный константой 0x..... или содержимым переменной-указателя - и открыть содержимое памяти, куда он показывает, например, как char [200], или как void * [32] - чтобы там отобразились 200 символов или 32 указателя, а если задать их как указатели на структуры или объекты, то отобразились для каждого элемента поля с их содержимым, как если бы мы запросили watch такого же статического массива, заданного в исходном тексте

такая фича была еще в отладчиках в MS-DOS...

KDevleop так не умеет, он только позволяет память просматривать, но очень неудобно - окно модальное, строки с адресом и числом ячеек не сохраняются, окно всегда слишком маленькое и тип, в виде которого отображать данные, указать нельзя - то есть, нельзя сказать ему "отобрази память с адреса 0xЧЕГОТОТАМ, 32 элемента, как void* указатели"
...
Рейтинг: 0 / 0
Qt и QMainWindow
    #34644262
Гурман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня создается шитый код, подобно виртуальной таблице методов, в который записываются указатели на функции, сами указатели объявлены как данные специального типа, чтобы компилятор выполнял контроль параметров - хочется видеть содержимое блока памяти, куда эти указатели пишутся, в виде имен С-функций, а не в виде шестнадцатеричных или хуже того, десятичных чисел
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt и QMainWindow
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]