Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Boris от Июнь 05, 2006, 16:20



Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 05, 2006, 16:20
Qt 4.1.3 CodeBlock 1 rc2
Пытаюсь прикрутить ее к Codeblocks и есть проблемы:
1. после Designer'а получаеться ui файл (как я понял из него надо создать *.h и *.cpp) header делаеться легко командой uic *.ui -o *.h Как создать cpp файл я не могу понять.
2. При компиляции уже готовых проектов из примеров Qt по некоторым идут ошибки при линовке. Нужно прописывать Codeblock'у qmake и make. Как это сделать я тоже не понял

Здесь на сайте уже видел посты на эти темы но там вскольз мне хотелось бы поподробнее. Помогирте пожалуйста.


Название: Qt + codeblock + Windows
Отправлено: codeLocker от Июнь 05, 2006, 17:04
"uic *.ui -o *.h" - это делать не надо.
Пропиши в файле проекта (.pro) в секциях SOURCES, FORMS и HEADERS файлы которые у тебя в проекте. Потом делаешь qmake и mingw32-make (если используешь MinGW). Так же посмотри что бы в переменной окружения path были пути к C:\Qt\4.1.3\bin\ и C:\MinGW\bin\ (это для моего случая).
qmake будет генерировать 3 файла Makefile, Makefile.Debug и Makefile.Release в которых и будет указана команда uic для всех файлов которые указаны в проекте в секции FORMS. Так же не забудь указать для классов которые используют механизм сигналов и слотов Q_OBJECT.


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 05, 2006, 17:24
Вот мой pro файл
Код:

HEADERS       = mainwindow.h
SOURCES       = main.cpp \
                mainwindow.cpp
RESOURCES     = application.qrc

# install
target.path = D:\Qt\4.1.3\examples\mainwindows\application
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS application.pro images
sources.path = D:\Qt\4.1.3\examples\mainwindows\application
INSTALLS += target sources

Вот application.qrc
Код:

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
    <file>images/copy.png</file>
    <file>images/cut.png</file>
    <file>images/new.png</file>
    <file>images/open.png</file>
    <file>images/paste.png</file>
    <file>images/save.png</file>
</qresource>
</RCC>

просто qmake в этой директории ничего не создает к нему нужны еще какие то параметры?


Название: Qt + codeblock + Windows
Отправлено: codeLocker от Июнь 05, 2006, 17:46
Нухно в pro файле
Код:
FORMS = mainwindow.ui

если у тебя форма так называется


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 06, 2006, 08:22
Это пример из examples там нет  mainwindow.ui я его хотя бы скомпилить пытаюсь ничего не выходит пишит не найден make файл *** No rule to make target `Makefile'.  Stop. Как создать этот самый make файл - qmake не хочет создавать. Может какие-то дополнительные параметры нужны

добавлено спустя 1 час:

 Вроде разобрался:
Чтобы создать *.pro файл нужно запустить qmake -project
Чтобы создать Makefile, Makefile.Debug и Makefile.Release нужно qmake -makefile
Ну и уже затем mingw32-make.exe -f Makefile.Release.
Но из kodeblok почему-то отказываеться работать пишет [*** No rule to make target `default'.  Stop.] Хочеться именно в codebloks чтобы с отладчиком IDE была :(


Название: Qt + codeblock + Windows
Отправлено: codeLocker от Июнь 06, 2006, 09:46
Тебе нужно в свойствах проекта добавить цели: release, debug и clean. Потом в зависимости от выбранной цели будет собераться проект.


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 06, 2006, 10:11
Спасибо это помогло. Могу нормально компилить проекты из examples

Теперь пробую создать свой проект: :(
1 Делаю ui файл;
2 Для него делаю qmake -project и qmake -makefile;
3 Запускаю mingw32-make.exe -f makefile;
После чего у меня в директории проекта появляеться ui_myproject.h (ui_myproject.cpp так и не создался)

Итог я так и не понял что нужно делать с ui файлом чтобы преобразовать его для компиляции проекта? :(

Доки с примерами так мало. А уж как подготовить проект к компиляции после Designer'a этого я и вовсе нигде не нашел :(


Название: Qt + codeblock + Windows
Отправлено: codeLocker от Июнь 06, 2006, 10:38
Нужно в файле проекта  (pro) указать все файлы, которые у тебя в проекте (заголовочные, срр и формы). Не забыть для обертки класса который будет у тебя использовать форму созданую в дизайнере указать макрос Q_OBJECT. Вот пример моего файла с загаловками
Код:

#ifndef _CALENDAR_H_
#define _CALENDAR_H_

#include <QtGui>
#include "ui_calendar.h"

class Calendar : public QDialog, private Ui_Calendar{
Q_OBJECT
public:
Calendar(QWidget * parent = 0);
virtual ~Calendar();
bool selectDate(QDate & date);
protected:
bool eventFilter(QObject *obj, QEvent *event);
private:
QDate currDate;
void showMonth();
private slots:
void setDay();
void changeMY( QDate d );
};
#endif // _CALENDAR_H_


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 06, 2006, 10:58
А так cpp файлик надо самому писать автоматизированно из ui можно создать только .h - заголовочный файл?


Название: Qt + codeblock + Windows
Отправлено: codeLocker от Июнь 06, 2006, 11:12
В Code::Blocks есть мастер создания классов, используй его.


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 06, 2006, 11:19
Так он переписывает и header файл и в cpp левое создает?


Название: Qt + codeblock + Windows
Отправлено: L.Marvell от Июнь 06, 2006, 13:27
Читаем Assistant -> Overviews -> Qt Designer Manual ->Using Forms and Components


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 06, 2006, 15:15
Цитата: "L.Marvell"

Читаем Assistant -> Overviews -> Qt Designer Manual ->Using Forms and Сomponents


Я это уже читал. Выходит что в Qt 4 Designer что есть что нет. Толку от того что он мне поможет заголовочный файл создать из ui - минимум. Получаеться весь файл cpp к форме придется самому писать? :(


Название: Qt + codeblock + Windows
Отправлено: crocus от Июнь 06, 2006, 15:47
Цитировать
Выходит что в Qt 4 Designer что есть что нет. Толку от того что он мне поможет заголовочный файл создать из ui - минимум. Получаеться весь файл cpp к форме придется самому писать?

Не он тебе сразу офисный пакет из трех твоих форм сгенерирует!!!
Абалдеть !!!
Ладно мануал на английском, так хоть Бланшет почитай что-ли (ее в сети много), этож никакого понимания что делаешь??
http://linuxcenter.ru/lib/books/qt3/


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 06, 2006, 15:53
Я с Builder'a. За ссылку спасибо. Понимания, правда, нет.


Название: Qt + codeblock + Windows
Отправлено: SLiDER от Июнь 11, 2006, 14:41
Уффф. Ну вы тут и по написАли. А объяснить человеку, что по ui-файлу в четверке ни какие cpp-файлы не создаются так и не сподобились.

В кратце история такая. В четвертой версии Qt изменилась идеология работы с файлами формы. Теперь по ним генерируется только заголовочный файл с, так называемым, user interface контейнером (ui). Который содержит в себе набор виджетов, которые вы создали в дизанере и функцию их создания и расскладки в соответствии с описанием из ui-файла (в реальности там еще кое чего есть но на первом этапе это не важно). И вам, как пользователю, только и надо, что включить этот контейнер (например так Ui::BlaBlaBla ui) в ваш класс (формы, диалога или чего у вас там), и вызвать в конструкторе функцию ui.setupUI(this). Вот в общем то и все.

P.S. А в добавление к чтению документации советую заглянуть в раздел примеров /examples/designer.


Название: Qt + codeblock + Windows
Отправлено: Boris от Июнь 13, 2006, 14:06
SLiDER, спасибо!!!


Название: Qt + codeblock + Windows
Отправлено: Insomniac от Октябрь 23, 2006, 22:53
Спрошу сдесь - пытаюсь в Code::Blocks откомпилировать программу. При сборке получаю вот такую ошибку
Код:
obj\Debug\find_dialog.o(.text+0x175): In function `ZN11TFindDialogC2EP7QWidget':
C:/Temp/Qt_Test/finddialog/find_dialog.cpp:5: undefined reference to `vtable for TFindDialog'

Ну и еще несколько таких же.
Хотя при компиляции и сборке с консоли(которая типа "cmd") - никаких проблем не возникает. Qt4.1.4 и MinGW32.