Russian Qt Forum
Ноябрь 26, 2024, 02:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Не работает Hello World!  (Прочитано 17612 раз)
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 содержит код из учебника:

Код
#include <QtGui>
 
int main(int argc, char** argv)
{
   QApplication app(argc, argv);
   QLabel lbl("Hello World!!!");
   lbl.show();
 
   return app.exec();
}
 

Но, к сожалению, ничего  не работает Грустный

Цитировать
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]
 }
 ^
                      ^

« Последнее редактирование: Июль 28, 2014, 22:32 от ioann » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июль 28, 2014, 16:58 »

читай книжку по Qt 5 или поставь себе Qt 4 чтобы в будущем путаницы не возникало.

твой фикс: #include <QtWidgets> и в .pro файл допиши QT += widgets
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ioann.sys
Гость
« Ответ #2 : Июль 28, 2014, 17:16 »

И в правду, помогло!!! Спасибо большое) :3

Я так понял, что в Qt5, вместо QtGui, теперь подключают QtWidgets. Правильно?
Где можно почитать об Qt5? Стоит его вообще курить, или лучше использовать Qt4.8?

Еще раз спасибо.
Записан
Bepec
Гость
« Ответ #3 : Июль 28, 2014, 17:41 »

Qt4 проще, меньше размер программы+dll.
Qt5 навороченнее, больше размер программы + dll, имеется OpenGl, Qml, куча всяких новых фишек + поддержка 11 стандарта.

Я остановился на Qt4. Пробовал пятёрку - не понравилось из-за кучи зависимых dll. Я их возможности не пользую, а они всё равно нужны :/
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Июль 28, 2014, 18:43 »

Где можно почитать об Qt5? Стоит его вообще курить, или лучше использовать Qt4.8?
Единственным оправданием использования старой версии может быть старый код который непросто перевести. А иначе и думать нечего, новее = лучше
Записан
ioann.sys
Гость
« Ответ #5 : Июль 28, 2014, 18:49 »

Согласен, но таким образом, для меня появляются трудности - это англ. яз. Хотя, я хз, на подсознании, читая мануал, какую-то часть улавливаю))
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #6 : Июль 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
Записан
Bepec
Гость
« Ответ #7 : Июль 28, 2014, 19:07 »

Новее != лучше.

Новее = больше возможностей.

Четвёрка нормально вылизана от ошибок и имеет свои преимущества Улыбающийся В том числе в количестве готовых решений Улыбающийся
« Последнее редактирование: Июль 28, 2014, 19:10 от Bepec » Записан
Alexu007
Гость
« Ответ #8 : Июль 28, 2014, 21:51 »

В QtCreator создал новоё пустоё приложение, добавил новый файл main.cpp, в файле 1.pro (1 - это название проекта) появилась запись SOURCES += main.cpp \
Я запускаю в четвёрке новый проект (выбираю класс widget), создаётся пустая форма и файлы main.cpp, widget.cpp и widget.h - создаются автоматически. Эту форму пустую уже можно запускать на выполнение без какого-либо кода - и она отработает. А чтобы нарисовать на форме "Hello word", достаточно мышкой притащить на форму метку, и в свойствах метки сделать соотв. надпись. - и снова ни одной строчки кода.

Другие файлы тож наверное создаются автоматически, но я в них никогда не лазил, необходимости такой не возникало.

В пятёрке тоже можно так, или требуются дополнительные телодвижения типо записи чего-либо в файл .pro и т.п.?

Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Июль 28, 2014, 22:17 »

В QtCreator создал новоё пустоё приложение, добавил новый файл main.cpp, в файле 1.pro (1 - это название проекта) появилась запись SOURCES += main.cpp \
Я запускаю в четвёрке новый проект (выбираю класс widget), создаётся пустая форма и файлы main.cpp, widget.cpp и widget.h - создаются автоматически. Эту форму пустую уже можно запускать на выполнение без какого-либо кода - и она отработает. А чтобы нарисовать на форме "Hello word", достаточно мышкой притащить на форму метку, и в свойствах метки сделать соотв. надпись. - и снова ни одной строчки кода.

Другие файлы тож наверное создаются автоматически, но я в них никогда не лазил, необходимости такой не возникало.

В пятёрке тоже можно так, или требуются дополнительные телодвижения типо записи чего-либо в файл .pro и т.п.?



В 5-й все также автоматизировано Улыбающийся
Записан

Bepec
Гость
« Ответ #10 : Июль 28, 2014, 22:30 »

Мне чего в креаторе нехватает - так это скорости. Сменил тип проекта с отладки на релиз - и сиди жди себе секунд 5-8 пока он что то сделает. Что - непонятно. pro и всё остальное одинаково Веселый
Записан
ioann.sys
Гость
« Ответ #11 : Июль 28, 2014, 22:30 »

Концепция C++, сделана так, что для каждого класса/функции/типа, есть свой заголовочный файл и его код, то есть файлы с расширением .h || .cpp. Например, такое простое приложение, как hello world "раздувать" на три файла, как-то не очень)) Приходилось дописывать в конце #include "main.moc" и тогда, всё работало.
Когда я начинаю писать программу, то сначала всё делаю в main.cpp. А потом, если функция/класс готов, то объявляю в заголовках и описываю в исходниках со всеми проверками #idndef... Мне так удобней Улыбающийся
Записан
Bepec
Гость
« Ответ #12 : Июль 28, 2014, 23:28 »

Можете считать что разбиение сделано в честь хорошей манеры программирования Улыбающийся
Записан
ioann.sys
Гость
« Ответ #13 : Июль 29, 2014, 01:51 »

Так и есть.

Кстати, Alex312, спасибо за ссылки. Скажите пожалуйста, правильно-ли я понял следующее:
 - QtGui отвечает только за само рисование окон (поверхности), а QWidget - непосредственно и есть сами виджеты;
 - в первом случае, используется QtGuiApplication, а во втором, привычный QtApplication.

Всё верно?
« Последнее редактирование: Июль 29, 2014, 01:57 от ioann » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #14 : Июль 29, 2014, 07:24 »

Мне чего в креаторе нехватает - так это скорости. Сменил тип проекта с отладки на релиз - и сиди жди себе секунд 5-8 пока он что то сделает. Что - непонятно. pro и всё остальное одинаково Веселый

А *.pro файл и не должен меняться Улыбающийся Креатор что-то с файлом сборки делает (мое предположение)
Записан

Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 23.