|
|
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
Начал изучать Qt. Скачал opensource'cную версию, собрал (под Windows, mingw). Пишу в Dev-cpp. Стал переписывать примеры из туториала. Все OK. Но когда, дело дошло до создания меню и соответственно использования QMainWindow начались проблемы. Дело в том, что я создал потомка MainWindow, и когда я в нем пишу макрос Q_OBJECT при линковке выдается сообщение "не обнаружена vtable для MainWindow" В тоже самое время, если собирать проект ручками, т.е. Код: plaintext 1. 2. 3. проект собирается. Ошибок нет. Судя по всему недостает обработки текста программы утилитой moc. Но как её задействовать в Dev-cpp? Не знаю. Или может быть дело вообще не в этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 10:58 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
Дело скорее всего в настройках целей по умолчанию make в dev-cpp. если бы moc не отрабатывал - проект бы не собирался вообще. Это можно проверить - в папке debug (или release) после сборки появляется файл moc_имя_исходника.cpp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 11:18 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
Дык, дело в том что из dev-cpp проект не собирается (ошибка при линковке) и moc_имя_исходника.cpp не появляется. Зато если ручками собирать, то он появляется. При создании проекта в dev-cpp я указал лишь, где лежат инклуды qt и либ-файлы. А как заставить работать moc? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 11:39 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
у тебя в 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 13:13 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
qmake -project надо сделать только ОДИН раз за всю жизнь проекта. Потом вручную править pro файл. moc запустится тогда и только тогда, когда в pro файле есть строка типа. HEADERS = myapp.h firstframe.h secondframe.h А вообще, поковырявшись со связкой QT плюс Dev-C++, я убил Dev-C++ :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 18:15 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
Немного поздно, но все равно отвечу. В настройках проекта в Dev-Cpp поставить галку use external makefile и указать makefile который генерит qmake... Это приходится делать при каждом запуске dev-cpp... (по крайней мере у меня - бета)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 09:37 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
tAZAR В настройках проекта в Dev-Cpp поставить галку use external makefile и указать makefile который генерит qmake... В итоге работаю без dev-cpp, ручками собираю. Пока устраивает, текст можно легко и в Fare писать. Но вот что делать, когда понадобится дебаггер. Спасибо, попробую твой способ. Если не поможет, то вроде есть консольный дебагер. Только как им пользоваться. Но все равно всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 10:53 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
пионерЕсли не поможет... Поможет :-) только перед этим вычистите output дирриктории проекта, и заново запустите qmake, потом уже F9 в DEV-Cpp и все будет ок... жалко, правда, что он эту галку не сохраняет и приходится каждый раз при открытии проекта идти в его свойства и указывать makefile.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 11:23 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 19:46 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
шаблон от 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 имеет русские буквы в имени, то он не запускается ни в дебаг, ни в релиз варианте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:34 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
А я, кстати, забил на DevCPP. Задолбало. Корявый он немного. А его отладка меня просто достала. Пользуюсь теперь CodeBlocks. Никакого геммороя, просто подключил внешний makefile и все, зер гутт. Да и сам он приятнее выглядит, и удобнее, на мой взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 22:25 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
Ну тогда давайте по порядку все... Ибо вопросов много, тем паче у тех, кто первый раз сталкивается. Скачиваем qt-win-opensource-4.3.0-mingw (например) запускаем его... он создает папку и просит указать компилятор, если стоит DEV-C++ то указываем папку C:\Dev-Cpp\bin. затем там есть (в корне QT) configure.exe какие параметры там надо указывать? насколько я понял он все и прписывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 11:04 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
На самом деле в readme все расписано по шагам, но раз уж спросили. конфигуратору лучше указать всего один параметр -platform. Если под винды и с mingw (в DevCPP например), то надо указать -platform win32-g++ С другими параметрами я бы не рекомендовал баловаться. Вроде как, ставиться всЁ по дефолту. Я, по началу, пытался кое-чего отключить (ну там, только release ) для того чтобы уменьшить время сборки, но потом напарывался на неудобства, потому как в некоторых местах, или программах в исходинках предполагается, что у Вас установлено всё. Поэтому не балуйтесь с параметрами, ставьте по дефолту. И, конечно, приготовьтесь, что ЭТО (сборка библиотеки) займет несколько часов( у меня заняло, где-то 3 часа, Pentium4 3.2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:16 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
по порядку: - скачан и установлен Qt4 + MinGW, настроены переменные среды, проверена сборка release версий примеров при помощи простого make - Qt4 пересобран с отладочной информацией (configure -debug), поскольку не отладочная версия библиотек в комплект не входит - скачан и установлен Dev-Cpp для Win только IDE, без комплиятора - он автоматом подхватывает заранее правильно настроенный MinGW - далее все, как в моем сообщении выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 13:54 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
читать "...поскольку отладочная версия библиотек в комплект не входит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 13:55 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
да, разумеется, Qt4 сразу скачивался с бинарниками библиотек под винды - это исключает лишние шаги при установке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 13:59 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
пионерА я, кстати, забил на DevCPP. Задолбало. Корявый он немного. А его отладка меня просто достала. Пользуюсь теперь CodeBlocks. Никакого геммороя, просто подключил внешний makefile и все, зер гутт. Да и сам он приятнее выглядит, и удобнее, на мой взгляд. Вроде там должен вскорости freeze выйти, будем его пробовать. Пользовать релиз 2005 года, после которого куча доработок прошла, не хочется. А что слышно - под CodeBlocks плагина для Qt не предвидится откуда-нибудь? И еще - для меня критична фича IDE, которую я сразу у DevCpp не увидел - просмотр блоков памяти с указанием типа данных, в котором надо показывать содержимое ячеек. Особенно с поддержкой указателей на функции. Есть такое в CodeBlocks? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 14:31 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
Не совсем понял, что означает "блоков памяти с указанием типа данных, в котором". В CodeBlocks можно в watche'ре просматривать структуру объекта, через сам объект или указатель на него. Т.е. там рисуется дерево включений одного объекта в другой. По-моему этого в DevCpp нет. Или вы про просмотр конкретного адреса памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 14:58 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
ну, как вариант - чтобы взять какой-то произвольный адрес, заданный константой 0x..... или содержимым переменной-указателя - и открыть содержимое памяти, куда он показывает, например, как char [200], или как void * [32] - чтобы там отобразились 200 символов или 32 указателя, а если задать их как указатели на структуры или объекты, то отобразились для каждого элемента поля с их содержимым, как если бы мы запросили watch такого же статического массива, заданного в исходном тексте такая фича была еще в отладчиках в MS-DOS... KDevleop так не умеет, он только позволяет память просматривать, но очень неудобно - окно модальное, строки с адресом и числом ячеек не сохраняются, окно всегда слишком маленькое и тип, в виде которого отображать данные, указать нельзя - то есть, нельзя сказать ему "отобрази память с адреса 0xЧЕГОТОТАМ, 32 элемента, как void* указатели" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 15:31 |
|
||
|
Qt и QMainWindow
|
|||
|---|---|---|---|
|
#18+
у меня создается шитый код, подобно виртуальной таблице методов, в который записываются указатели на функции, сами указатели объявлены как данные специального типа, чтобы компилятор выполнял контроль параметров - хочется видеть содержимое блока памяти, куда эти указатели пишутся, в виде имен С-функций, а не в виде шестнадцатеричных или хуже того, десятичных чисел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 15:36 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34539387&tid=2028554]: |
0ms |
get settings: |
12ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 569ms |

| 0 / 0 |
