Название: hello qt? или как устроено приложение на qt Отправлено: noname.pl от Декабрь 22, 2006, 18:41 взял книгу Бланшета по qt3. но не получается даже скомпилить hello qt програмку. у меня vs2003. создаю приложение таким образом: File -> New -> Project -> QT Application. называю приложение qt_hello_world. в визарде настройки по умолчанию не меняю. таким образом на выходе получаю проект из файлов:
main.cpp:{секция Sources} Код: #include <QtGui/QApplication> qt_hello_world.cpp:{секция Sources} Код: #include "qt_hello_world.h" qt_hello_world.h:{секция Header Files} Код: #ifndef QT_HELLO_WORLD_H moc_qt_hello_world.cpp:{секция Generated Files} Код: #include "../../qt_hello_world.h" ui_qt_hello_world.cpp.h {секция Generated Files} Код:
где можно прочитать что это такое? зачем эти файлы? что каждый из них из себя представляет и что в них внутри написано? это просто пустой проект. при компиляции я вижу форму с меню и панельку. может кто-нибудь прокомментировать код? Название: hello qt? или как устроено приложение на qt Отправлено: Mikhail от Декабрь 22, 2006, 19:09 Все это описана в assistant. И вполне доходчиво если разбираешь английский язык. А надо бы. Файлы moc_*** и ui_*** как и написано генерируются средствами самого qt. А первые три файла тебе создал интегратор.
Или ты работаешь в qt3 и читаешь "Бланшета по qt3", либо для Qt4 Читаешь оригинал на английском. Простую программу должен разобрать сам. Поищи по форуму подобных вопросов хватает. Название: hello qt? или как устроено приложение на qt Отправлено: noname.pl от Декабрь 22, 2006, 20:37 таких ответов я и сам мог бы написать целую кучу. это создает то, а то это. p.s.: я бы с удовольствием разобрал эту просстую программу. по тому же учебнику. но вот незадача. в учебнике описывается пример из одного файла, а в студии самое простое приложение, которое я могу создать - это такой набор файлов. я бы не задавал таких тупых вопросов, если бы нашел в литературе описание того, о чем я спрашивал. вы знаете где я могу это посмотреть? с английским у меня не очень.
Название: hello qt? или как устроено приложение на qt Отправлено: Вудруф от Декабрь 22, 2006, 20:46 Как вариант - начать разбираться с консоли. Разобраться со строением библиотеки, с построением интерфейса вручную, а затем уже переезжать на ui.
добавлено спустя 1 минуту: А Бланшета, ИМХО, почитать полезно, несмотря на то, что примеры далеко не всегда работать будут :) Читать на английском сложнее, чем на русском, так что вариант с оригиналом совсем не для всех. Название: hello qt? или как устроено приложение на qt Отправлено: noname.pl от Декабрь 22, 2006, 21:00 с довольствием! но книга Бланшета начинается с таких строк:
Код: Ниже приводится текст простейшей Qt программы: данный пример не работает у меня. и я не знаю что с этим сделать. не знаю где просить помощи. как я понял форум по qt на prog.org.ru - это самый большой форум по qt в инете ... больше мне негда спросить совета. за книгами ездил вчера. думаю "куплю книгу, не буду задавать тупых вопросов". так переведенных книг нормальных нету. ... я нашел в сети книгу по третьему кутэ в электронном варианте. начинаю ее изучать - и сходу получаю некомпилируемый проект. как мне изучать, методом тыка? лет 10 наверное придется, чтобы что-то узнать ... если бы я хорошо знал qt то создал бы и для себя и для других что-то типа delphi world и отправлял бы туда новичков за ответами ... но ничего подобного по qt нет. а разбираться в элементарных вещах, не зная что к чему - на это уйдет очень много времени ... тем более в рунете но qt ВООБЩЕ ничего нету. если бы подобные моим вопросы были бы вынесены в faq и подробно описаны - я бы не писал все это здесь. а то, что узнал бы после - тем и дополнил бы такой сборник статей. пусть не сейчас, пусть даже через полгода ... неужели так сложно прокоментить эти файлики, которые я прислал. я и сам понимаю в них многое. но кое-что не до конца. а кое-что возможно ошибочно. если бы меня кто-то поправил то это тему легко было все время давать ссылкой для тех кто создает первый раз qt-приложение в ms visual studio .......... добавлено спустя 6 минут: ведь собственно в чем проблема ... я дописываю в main.cpp строки Код: QLabel *label = new QLabel("Hello, Qt!", 0); проект компилруется только если закоментить 2ю строчку. но результат таков - кроме основного окна с пыстм меню и пустым баром выскакивает ЦЕЛОЕ ДОПОЛНИТЕЛЬНОЕ окно с одним лабелом. .... если же пользоваться графическими виджетами и киать их на форму ... то без моего участия генеряться куски кода по этим файлам. и я не знаю зачем и почему ... если бы мне удалось понять структуру такого проекта (на примере пустого, как я привел), то у меня бы появились такие вопросы, которые описаны в учебнике ... а пока что лишь те, ответов на которые я там не нашел. Название: hello qt? или как устроено приложение на qt Отправлено: Mikhail от Декабрь 22, 2006, 21:08 Ну если совсем просто, то к этому файлу у тебя должен быть файл проекта ( типа hello.pro ).
Выполни в консоли qmake - получишь makefile. Далее nmake - приложение готово. Запускай. Все по учебнику. Если нет файла проекта, то "qmake -project" создаст его, тоже в консоли. Это основа. Далее сможешь изменить пример, добавить функциональности. Попробуй компилировать примеры ($(QTDIR)/examples). Это тоже учебник Qt. Появятся вопросы задавай. Название: hello qt? или как устроено приложение на qt Отправлено: Вячеслав от Декабрь 22, 2006, 23:09 Эта
Берем %QTDIR%\examples\tutorial\ и идем от t1 до t14 вдумчиво глядя на исходники ;) Если чего-то не понятно - ассистент , а потом сюды ;) Название: hello qt? или как устроено приложение на qt Отправлено: Dendy от Декабрь 23, 2006, 00:50 Проблема в том, что книга у тебя по Qt3, а программируешь на Qt4. Например, в примере из книги указано:
Код: a.setMainWidget( label ); Ето значит, что у тебя в программе есть главное окно (метка с надписью "Hello, Qt!"), по закрьІтию которого закроется и приложение. В Qt4 етот метод упразднён, его просо можно пропустить, программа сама закроется при закрьІтии всех окон. Прокомментировать файльІ тут не влом. Просто все очень хорошо понимают, что если тьІ сам не сможешь разобраться в примере, то дальше у тебя будет возникать вопросов на порядок больше. Все они разжёваньІ в документации и примерах. Задавать их на форуме безсмьІсленно. Первое приложение с помощью интегратора - слишком сложно для человека, первьІй раз увидевшего Qt. Следуй совету Вячеслава - начинай с туториалов. Или просто ходи по всем примерам и запускай всё подряд. Смотри исходники. Название: hello qt? или как устроено приложение на qt Отправлено: noname.pl от Декабрь 23, 2006, 01:45 не запускается qmake. где ему прописать? в переменных окружения? где именно? то же самое с nmake. а examples рабочие. очень наглядные спасибо. ... вот только не получается у меня создать такой проект qt в котором был бы только 1 файл ... если создаю empty project .NET --- то в результате компилятор не находит подключаемые мной вручную библиотеки #include <QApplication>, #include <QPushButton> и так далее. что сделать?
добавлено спустя 29 минут: Dendy, спасибо что вы мне помогаете. сейчас пересматриваю примеры из туториала ... но я не могу сам создать такой же пример. переписываю код. пробую скомпилировать - компилятор ругается на непрописанные библиотеки. а где их прописать я не знаю ... все что мне сейчас нужно это суметь нормально создавать чистые проекты, разобраться в том, что из себя представляет новые проект через визард и как скомпилировать примеры из учебника. примеры из учебника из tutorial компилятся на ура ... вот осталось только два первых вопроса. Цитировать Прокомментировать файльІ тут не влом. Просто все очень хорошо понимают, что если тьІ сам не сможешь разобраться в примере, то дальше у тебя будет возникать вопросов на порядок больше. Все они разжёваньІ в документации и примерах. Задавать их на форуме безсмьІсленно. приведу пример. когда я первый раз увидел виндовс (а позже линукс), то глаза мои были широко открыты. мне предлагали учебники в которых все начиналось с настройки консоли, локализации и так далее ... но меня волновали совсем другие вопросы - настройка интернета и структура man-страниц, и вопрос о том, как сделать наспех рабочую систему. когда я нашел ответы на свои вопросы я начал читать учебник с первой страницы о том, как настроить консоль ... то есть почувствовав землю под ногами мне уже было просто _интересно_ изучать систему по учебнику. когда сама система уже в полете. другой пример - музыка. меня хотели отдать в муз.школу, но заниматься в ней мне показалось утомительно, по-этому я нашел себе преподавателя, который бы мне сначала дал то, _что_нужно_мне_, прошло полтора года и ноты меня зацепили очень сильно, я стал печатать их и разбирать. сейчас я неплохо владею импровизацией ... третий пример. когда я в 10м классе увидел первый раз паскаль мне почему-то было неинтересно делать "телефонный справочник", я занимался только тем чем заинтересовался - математические задачки. через 2 месяца я уже учавствовал в городской олимпиаде, в след году был призером областной, ещё через год университетской. я не хочу сказать, что я что-то хорошо знаю или плохо. о qt я слышу уже порядка года. но увидел его буквально неделю назад. и меня на столько проперло от него, что 2 дня спустя я нашел где его скачать, а вы помогли мне его установить. за что я немерянно благодарен. не думаю что подобных моему вопросов не звучит ... и если на него ответить, то можно было бы и его включить в faq. а я через полгода присоединюсь и скорее всего мне уже будет что сказать о qt "из личного опыта" ... если бы вы жили в соседнем доме - я бы вам не стесняясь выставил ящик пива за ответы на такие вопросы. потом бы сам эти ответы оформил в виде статьи и прислал координатору ... а так не знаю даже чем поблагодарить. даже плючика на этом форуме поставить нельзя. надеюсь меня поняли о чем я хотел сказать ... уже поздно и мозг плавает в пиве. Название: hello qt? или как устроено приложение на qt Отправлено: Dendy от Декабрь 23, 2006, 03:05 noname.pl, полностью с вами согласен. Многие люди непонимают, что сухой документацией приманить человека сложно. Гораздо важнее сходу заинтересовать, приманить чем-нибудь красивьІм и понятньІм. ГорьІ мануалов обьяснят все мелочи, но ето как раз и неважно. Важно поддерживать ощущение простотьІ и понятности, неважно какими жертвами. Иначе человек со всеми талантами и ентузиазмом может разочароваться в идее.
Именно поетому мьІ сейчас организуем Wiki. Для лёгкого старта. ВьІ не первьІй и не последний, кто будет задавать такие вопросьІ. И без вики отвечать на них будет утомительно. Просто вьІ попали в тот момент, когда всё ето зарождается. Ну не смогут вам лично на форуме уделить много внимания. МьІ сделаем всё возможное, чтобьІ разжевать все вопросьІ в статьях. ВопросьІ, которьІе вьІ задали абсолютно корректньІ. Претензий нет. 5 файлов из генератора проекта, что в них? Я бьІ тоже удивился. Просто обсуждая библиотеку подразумевается, что начинающий пользователь знаком с язьІком С++, компилляторами, файловой системой, переменньІми окружения, зависимостями сборки и так далее. Именно поетому вам предлагается начать не с интегратора, а с примеров. Кроме того документация Qt великолепна и самодостаточна. ОткрьІваем главную страницу Асистанта и видим: How to Learn Qt Installation Tutorial and Examples Клацаем и читаем все три пункта. Теперь по делу. Цитата: "noname.pl" не запускается qmake. где ему прописать? в переменных окружения? где именно? то же самое с nmake. Проблема не в Qt. Нужно добавить в переменную окружения PATH каталог: qtdir/bin. Как компилировать с командной строки. Мой рецепт. 1. Копируем файл: c:\Program Files\Microsoft Visual Studio 7\Common7\Tools\vsvars32.bat в C:\Windows\vars7.bat 2. ОткрьІваем етот файл и добавляем в начало: Код: @set PATH=path\to\qt\bin;%PATH% 3. Сохраняем файл. 4. Заходим в любой каталог с примером. ОткрьІваем консоль. Код: cmd cmd - открьІть консоль vars7 - запустить наш батник с переменньІми Qt и Студии 7. qmake - создать Makefile nmake - собрать проект с помощью Makefile Теперь как сделать проект Qt в студии. 1. ОткрьІваем студию. 2. НовьІй пустой проект Win32. 3. Добавляем в настройки проекта: C/C++ / General / Additional Include Directories: path/to/qt/include;path/to/qt/include/QtCore;path/to/qt/include/QtGui Linker / General / Additional Library Directories: path/to/qt/lib Linker / Input / Additional Dependencies: qtmaind.lib QtCored4.lib QtGuid4.lib 4. Добавляем в проект новьІй CPP файл: main.cpp. Редактируем его: Код: #include <QApplication> 5. Компилим. Запускаем. Название: hello qt? или как устроено приложение на qt Отправлено: Steven_Orko от Декабрь 23, 2006, 03:16 to noname.pl Хочу поитересоваться возрастом вашим ))))
Ни чего лично, извиняй, но!!! Допустим, что вы начали работать с КуТе, ну, два дня, ну, три-четыре назад.... Это не имеет значения. А перед КуТе что было??? Какая ОО-библиотека использовалась? На каком языке были ваши первые программы? В какой среде вы работали раньше? Попробуйте задать себе вопрос, можете ли вы отличить компилятор от препроцессора и линковщика? Какие у них функции? Примерный алгоритм их работы? Какие им нужны входные данные, прежде, чем вы получите готовую программу. Судя по всему, вы не застали времена или не захотели застать, когда исходный тект программы набивался вручную во вручную же созданный текстовый файл. Те времена, когда сначала получали объектники, а потом уже их линковали. Это сейчас все в одном флаконе ))) По поводу вашего первого примера из КуТе, и почему студия создает самый простой проект с использованием UI-файлов: Кто мешат вам создать текстовый файл, вбить туда то, что написано ручками и выполнить действия, которые указаны в книге? На форуме принято задавать вопросы типа, пытаюсь сделать то-то и то-то, но получаю кучу ошибок и/или неверное поведение программы. А по вопросам "научите меня жить", это надо обращаться совсем к другим людям. P.S. Я сам начинал именно с тех же граблей, что вы описали выше... Название: hello qt? или как устроено приложение на qt Отправлено: noname.pl от Декабрь 23, 2006, 17:25 2Steven_Orko% перед кутэ я год не программировал. ко всему добавить, что я не был превосходным программистом и до этого времени (кое-что мне давалось легче чем возможно кому-либо, но я не удалял программированию почти никакого внимания). да, выполнял работу за деньги(delphi), учился, иногда писал что-то веселое для себя ... где-то так. первые программы на паскале. потом дельфи, позже перл. среды соответственно tp7/delphi7/vim. да, могу отличить компилятор от линковщика. и примерное представляю, какие функции они выполняют. ну собственно на tp7 и perl всегда приходилось писать в созданном собственноручно файлике. а лет мне 19, не воспринял этот вопрос как личный, но все же интересно что это меняет.
p.s.: я не прошу учить меня жить, всего лишь разобраться в элементарном. если разобраться в чем-то простом, простой структуре этих файлов, то в больших проектах уже будет не так важно 5 файлов или 125 и сколько в них строк. структура остается той же ... применяем индуктивный метод = и ответ у нас на лодони. 2Dendy% не знаю как и благодарить. но сегодня уже вряд ли буду программировать, час поздний, по-этому проделаю все вами описанное завтра с утреца... добавлено спустя 12 часов 54 минуты: компиляция начинается, но не выполняется. ошибки: Код:
это я пытаюсь сделать "чистый win32". консольный вариант пока что не пробывал. переменные окружения прописаны. Цитировать Linker / Input / Additional Dependencies: qtmaind.lib QtCored4.lib QtGuid4.lib у меня находится почему-то в Custom Build Step а не в Linker/Input ... Название: hello qt? или как устроено приложение на qt Отправлено: Dendy от Декабрь 23, 2006, 18:31 Забей на Custom Build и вьІтри всё оттуда. Добавь либьІ именно как я написал: Linker/Input. И не забуть про
Linker / General / Additional Library Directories: path/to/qt/lib Название: hello qt? или как устроено приложение на qt Отправлено: noname.pl от Декабрь 23, 2006, 18:53 прописываю в Linker/Input/Additional Dependecies qtmaind.lib QtCored4.lib QtGuid4.lib. из Custom Build все убрал. результат:
Код: win32nafeg error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBC.lib(typinfo.obj) Название: hello qt? или как устроено приложение на qt Отправлено: Dendy от Декабрь 23, 2006, 19:10 Встаёт вопрос:
1. Как тьІ ставил Qt? 2. БьІл ли проект в Студии по умолчанию? 3. Стоит ли в C/C++ / Code Generation / Runtime Library / Multi-threaded debug DLL (/MDd)? Название: hello qt? или как устроено приложение на qt Отправлено: noname.pl от Декабрь 23, 2006, 19:15 проблема решилась так: вместо пустого win32 прожекта, сделал empty project .NET ... настройки сделал все те же самые. теперь программа компилируется успешно. вместе с qt-шным окошком "hello qt" выскакивает пустое консольное окошко ... не знаю, на сколько это нормально. но хотя бы работает пример ;) thx
добавлено спустя 3 минуты: Цитата: "Dendy" Встаёт вопрос: 1. Как тьІ ставил Qt? 2. БьІл ли проект в Студии по умолчанию? 3. Стоит ли в C/C++ / Code Generation / Runtime Library / Multi-threaded debug DLL (/MDd)? qt ставил через интегратор. все ровно. в C/C++ / Code Generation / Runtime Library / стоит Multi-threaded debug DLL (/MDd) для дебага и Multi-threaded (/MT) для релиза. |