Название: Не работает Hello World! Отправлено: ioann.sys от Июль 28, 2014, 16:29 Всем привет!
Только начал изучать Qt. Скачал Qt 5.3.1 для Windows (MinGW). Читаю книжку Шлее 2012 г. выпуска. В QtCreator создал новоё пустоё приложение, добавил новый файл main.cpp, в файле 1.pro (1 - это название проекта) появилась запись SOURCES += main.cpp \ Далее, main.cpp содержит код из учебника: Код
Но, к сожалению, ничего не работает :( Цитировать D:\qt\prj\NULL\main.cpp:6: ошибка: variable 'QApplication app' has initializer but incomplete type QApplication app(argc, argv); D:\qt\prj\NULL\main.cpp:12: предупреждение: control reaches end of non-void function [-Wreturn-type] } ^ ^ Название: Re: Не работает Hello World! Отправлено: kambala от Июль 28, 2014, 16:58 читай книжку по Qt 5 или поставь себе Qt 4 чтобы в будущем путаницы не возникало.
твой фикс: #include <QtWidgets> и в .pro файл допиши QT += widgets Название: Re: Не работает Hello World! Отправлено: ioann.sys от Июль 28, 2014, 17:16 И в правду, помогло!!! Спасибо большое) :3
Я так понял, что в Qt5, вместо QtGui, теперь подключают QtWidgets. Правильно? Где можно почитать об Qt5? Стоит его вообще курить, или лучше использовать Qt4.8? Еще раз спасибо. Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 28, 2014, 17:41 Qt4 проще, меньше размер программы+dll.
Qt5 навороченнее, больше размер программы + dll, имеется OpenGl, Qml, куча всяких новых фишек + поддержка 11 стандарта. Я остановился на Qt4. Пробовал пятёрку - не понравилось из-за кучи зависимых dll. Я их возможности не пользую, а они всё равно нужны :/ Название: Re: Не работает Hello World! Отправлено: Igors от Июль 28, 2014, 18:43 Где можно почитать об Qt5? Стоит его вообще курить, или лучше использовать Qt4.8? Единственным оправданием использования старой версии может быть старый код который непросто перевести. А иначе и думать нечего, новее = лучшеНазвание: Re: Не работает Hello World! Отправлено: ioann.sys от Июль 28, 2014, 18:49 Согласен, но таким образом, для меня появляются трудности - это англ. яз. Хотя, я хз, на подсознании, читая мануал, какую-то часть улавливаю))
Название: Re: Не работает Hello World! Отправлено: alex312 от Июль 28, 2014, 19:06 Согласен, но таким образом, для меня появляются трудности - это англ. яз. Хотя, я хз, на подсознании, читая мануал, какую-то часть улавливаю)) Никакая книга вас не спасет от чтения документации. Поэтому знание английского на уровне чтения документации надо тоже вырабатывать.А так, читайте книжку про Qt4 и документацию про отличия Qt5 (их там немного). http://qt-project.org/doc/qt-5/portingguide.html http://qt-project.org/doc/qt-5/qt5-intro.html Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 28, 2014, 19:07 Новее != лучше.
Новее = больше возможностей. Четвёрка нормально вылизана от ошибок и имеет свои преимущества :) В том числе в количестве готовых решений :) Название: Re: Не работает Hello World! Отправлено: Alexu007 от Июль 28, 2014, 21:51 В QtCreator создал новоё пустоё приложение, добавил новый файл main.cpp, в файле 1.pro (1 - это название проекта) появилась запись SOURCES += main.cpp \ Я запускаю в четвёрке новый проект (выбираю класс widget), создаётся пустая форма и файлы main.cpp, widget.cpp и widget.h - создаются автоматически. Эту форму пустую уже можно запускать на выполнение без какого-либо кода - и она отработает. А чтобы нарисовать на форме "Hello word", достаточно мышкой притащить на форму метку, и в свойствах метки сделать соотв. надпись. - и снова ни одной строчки кода.Другие файлы тож наверное создаются автоматически, но я в них никогда не лазил, необходимости такой не возникало. В пятёрке тоже можно так, или требуются дополнительные телодвижения типо записи чего-либо в файл .pro и т.п.? Название: Re: Не работает Hello World! Отправлено: gil9red от Июль 28, 2014, 22:17 В QtCreator создал новоё пустоё приложение, добавил новый файл main.cpp, в файле 1.pro (1 - это название проекта) появилась запись SOURCES += main.cpp \ Я запускаю в четвёрке новый проект (выбираю класс widget), создаётся пустая форма и файлы main.cpp, widget.cpp и widget.h - создаются автоматически. Эту форму пустую уже можно запускать на выполнение без какого-либо кода - и она отработает. А чтобы нарисовать на форме "Hello word", достаточно мышкой притащить на форму метку, и в свойствах метки сделать соотв. надпись. - и снова ни одной строчки кода.Другие файлы тож наверное создаются автоматически, но я в них никогда не лазил, необходимости такой не возникало. В пятёрке тоже можно так, или требуются дополнительные телодвижения типо записи чего-либо в файл .pro и т.п.? В 5-й все также автоматизировано :) Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 28, 2014, 22:30 Мне чего в креаторе нехватает - так это скорости. Сменил тип проекта с отладки на релиз - и сиди жди себе секунд 5-8 пока он что то сделает. Что - непонятно. pro и всё остальное одинаково :D
Название: Re: Не работает Hello World! Отправлено: ioann.sys от Июль 28, 2014, 22:30 Концепция C++, сделана так, что для каждого класса/функции/типа, есть свой заголовочный файл и его код, то есть файлы с расширением .h || .cpp. Например, такое простое приложение, как hello world "раздувать" на три файла, как-то не очень)) Приходилось дописывать в конце #include "main.moc" и тогда, всё работало.
Когда я начинаю писать программу, то сначала всё делаю в main.cpp. А потом, если функция/класс готов, то объявляю в заголовках и описываю в исходниках со всеми проверками #idndef... Мне так удобней :) Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 28, 2014, 23:28 Можете считать что разбиение сделано в честь хорошей манеры программирования :)
Название: Re: Не работает Hello World! Отправлено: ioann.sys от Июль 29, 2014, 01:51 Так и есть.
Кстати, Alex312, спасибо за ссылки. Скажите пожалуйста, правильно-ли я понял следующее: - QtGui отвечает только за само рисование окон (поверхности), а QWidget - непосредственно и есть сами виджеты; - в первом случае, используется QtGuiApplication, а во втором, привычный QtApplication. Всё верно? Название: Re: Не работает Hello World! Отправлено: gil9red от Июль 29, 2014, 07:24 Мне чего в креаторе нехватает - так это скорости. Сменил тип проекта с отладки на релиз - и сиди жди себе секунд 5-8 пока он что то сделает. Что - непонятно. pro и всё остальное одинаково :D А *.pro файл и не должен меняться :) Креатор что-то с файлом сборки делает (мое предположение) Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 29, 2014, 09:12 Надо как нить посмотреть будет :D А то прям эта тема меня волнует :D
Название: Re: Не работает Hello World! Отправлено: kambala от Июль 29, 2014, 09:29 Так и есть. не все:Кстати, Alex312, спасибо за ссылки. Скажите пожалуйста, правильно-ли я понял следующее: - QtGui отвечает только за само рисование окон (поверхности), а QWidget - непосредственно и есть сами виджеты; - в первом случае, используется QtGuiApplication, а во втором, привычный QtApplication. Всё верно? - в 5 QtGui отвечает за все, что связано с пользовательским интерфейсом за исключением виджетов (в 4 виджеты тоже в QtGui сидели) - в 5 QApplication наследуется от QGuiApplication, который, в свою очередь, наследуется от QCoreApplication (в 4 было QApplication : QCoreApplication) Мне чего в креаторе нехватает - так это скорости. Сменил тип проекта с отладки на релиз - и сиди жди себе секунд 5-8 пока он что то сделает. Что - непонятно. pro и всё остальное одинаково :D А *.pro файл и не должен меняться :) Креатор что-то с файлом сборки делает (мое предположение)Название: Re: Не работает Hello World! Отправлено: OKTA от Июль 29, 2014, 10:03 А можно поставить build_all и не переключать ;D
Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 29, 2014, 10:13 Как можно парсить этот pro файл 3 секунды?
Код: #------------------------------------------------- Название: Re: Не работает Hello World! Отправлено: kambala от Июль 29, 2014, 10:50 ответ на твой вопрос находится в исходниках креатора :)
Название: Re: Не работает Hello World! Отправлено: Пантер от Июль 29, 2014, 10:59 Там же еще парсинг исходников идет.
Название: Re: Не работает Hello World! Отправлено: OKTA от Июль 29, 2014, 21:45 Я готов простить эти секунды креатору в отличии от студии, которая плодит файлы в папке проекта, как бешеная крольчиха ;D
Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 29, 2014, 22:01 Эммм...
Должен вас оповестить что настройка директорий находится в свойствах проекта. Единственно что вы не можете поменять - наличие pch в папке с файлом sln. Всё остальное настраивается под вас :D PS ещё 1 преимущество перед креатором. Можно хоть к черту на куличики компилить и релизить. Название: Re: Не работает Hello World! Отправлено: OKTA от Июль 29, 2014, 22:19 Там столько этих свойств, что без ящика водки как-то совсем неинтересно разбираться ;D
Название: Re: Не работает Hello World! Отправлено: Old от Июль 29, 2014, 22:25 PS ещё 1 преимущество перед креатором. Можно хоть к черту на куличики компилить и релизить. А зачем вообще для релиза IDE?Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 29, 2014, 23:35 Чтоб было. Не стоит всё мерять "сложной" меркой. Я большинство программ "релизю" в IDE. Протестил, продебажил, зарелизил, отослал. Всё.
Название: Re: Не работает Hello World! Отправлено: Пантер от Июль 30, 2014, 08:14 PS ещё 1 преимущество перед креатором. Можно хоть к черту на куличики компилить и релизить. Это ты сейчас не прошадоу билд случаем?Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 30, 2014, 13:03 Нет, это я про qmake и его ограничения на сборку программы ниже корня исходников.
Название: Re: Не работает Hello World! Отправлено: Пантер от Июль 30, 2014, 13:18 Нет, это я про qmake и его ограничения на сборку программы ниже корня исходников. Эм. qmake умеет собирать где угодно.Код: [panter]/var/tmp/1=> qmake /media/work/program/archive/VirtualKeyboard/VirtualKeyboard.pro 14:17 pts/1 Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 30, 2014, 13:24 Нууу, что сказать. QtCreator идущий с 5.3 не даёт собирать программу в каталоге ниже исходников. QMake выдаёт ошибку. За давностью попыток точно не помню какую.
PS даже тему создавал :) update: ну если уточнить, то папка назначения сборки не может быть ниже каталога с pro файлом. Название: Re: Не работает Hello World! Отправлено: Пантер от Июль 30, 2014, 13:27 Нууу, что сказать. QtCreator идущий с 5.3 не даёт собирать программу в каталоге ниже исходников. QMake выдаёт ошибку. За давностью попыток точно не помню какую. А я из консоли всегда такое делаю, вот и не знаю. :)PS даже тему создавал :) update: ну если уточнить, то папка назначения сборки не может быть ниже каталога с pro файлом. Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 30, 2014, 14:05 Всё могло измениться. Но интересовался я креатором недолго.
PS проверил, действительно этого ограничения больше нет. Видимо кого то тоже достало :D Название: Re: Не работает Hello World! Отправлено: Пантер от Июль 30, 2014, 14:08 Всё могло измениться. Но интересовался я креатором недолго. Мне Креатор тоже раньше не нравился, а потом допилили и он стал почти няшей.PS проверил, действительно этого ограничения больше нет. Видимо кого то тоже достало :D Название: Re: Не работает Hello World! Отправлено: Ginger_Ministrel от Июль 30, 2014, 16:21 А чем Криэйтор не няша?
Название: Re: Не работает Hello World! Отправлено: Bepec от Июль 30, 2014, 16:26 http://www.prog.org.ru/topic_26985_0.html
Название: Re: Не работает Hello World! Отправлено: Alexu007 от Август 03, 2014, 16:18 А чем Криэйтор не няша? Это гуру пальцы гнут, а так конечно няша. Натаскал мышкой кнопок на форму - и коди-и-и-и...Название: Re: Не работает Hello World! Отправлено: lit-uriy от Август 03, 2014, 16:20 Натаскать виджетов на форму издавна можно и в Qt Designer-е.
Название: Re: Не работает Hello World! Отправлено: Alexu007 от Август 03, 2014, 21:41 A-a-a я думал это одно и то же.
|