Итак, начинаем работу с QT. Здесь и ниже использованы видео-уроки -> отсюда и личный опыт их применения.
Ну что ж. Наконец-то мы разобрались с настройкой Qt, значит можем приступать к созданию своего приложения.
Сегодня мы создадим первое приложение с текстом, кнопкой и вторым окном, которое откроется по нажатию на кнопку.
Основные моменты для понимания приложений с GUI на Qt
Во-первых, чтобы создать с помощью Qt приложение с графическим интерфейсом нам нужно при создании проекта выбирать пункт Приложение Qt Widgets.

Во-вторых, наша работа, по большей части, будет состоять из двух частей: работы в графическом редакторе и работы с кодом. То есть, мы будем вручную добавлять определенные элементы на пользовательское окошко, а после уже программно заставлять эти объекты выполнять определенные действия. Дальше будут примеры, но важно осознать сам процесс.
И последнее. Для работы с кодом нужно понять, как устроен этот фреймворк. Все объекты графического интерфейса — окна, кнопки, текстовые поля и т.д. — это классы. Исходя из этого мы и будем строить с ними свои взаимоотношения. У них, как у всех классов, есть h.- файлы с перечнем переменных и функционала, есть cpp-файлы с описанием этого функционала. Какие-то объекты являются самостоятельными, какие-то — часть других объектов. С этим разберемся позже. Сейчас важно понимать, что работать с ними мы будем как и привыкли в С++: создавая переменные и обращаясь к их функционалу из-под указателей или из-под объектов.
Например, мы можем создать текстовое поле. В Qt такой объект называется label.
QLabel *label = new QLabel ("Hello word!");
label-> resize(400);
label->show();
Как видите, мы динамически создали указатель на объект типа QLabel,и далее из-под этого указателя обратились к его методам — изменили размер и заставили вывести на экран. Аналогично происходит работа со всеми остальными объектами.
Создание первого приложения и первые ошибки
- Создаем новый проект Qt Widhets. Сделать это можно классическим Файл->Создать файл или проект…, через горячие клавиши Ctrl+N или нажатием на стартовой странице Qt кнопки +Новый проект .
- Теперь у нас имеется «заготовка» проекта. Её уже можно собрать и запустить, и мы увидим пустое окно со стандартными панелями состояния и меню. Для сборки и запуска нажимаем Ctrl+B, ждем, пока закончится сборка и запускаем проект с помощью Ctrl+R.

Добавим свои элементы на это окошко. Для этого в редакторе нужно найти папку Формы и открыть файл mainwidow.ui.

Теперь мы попадаем на вкладку Дизайн, где собственно и будем проводить манипуляции с окном. Справа находятся все доступные элементы, слева — их свойства и параметры, а по центру, собственно, само пользовательское окно. Добавление элементов происходит банальным «перетаскиванием» нужного объекта на нашу форму. Для начала добавим текстовое поле (объект называется Label) и кнопку (объект Push Button).
Редактируем текст внутри объектов двойным щелчком левой кнопкой мышки на нем. По задумке далее мы создадим еще одно окно, поэтому на текстовом поле пишем «Открытие второго окна», а на кнопке «Открыть окно».

Теперь создадим еще одно окно, которое должно будет открыться по нажатию кнопки. Для этого возвращаемся в редактор, на нашем проекте нажимаем правой кнопкой мыши, выбираем пункт Добавить новый… В новом окне нужно выбрать Qt и Класс формы Qt Designer

Далее нам дадут выбор вида окна: с кнопками, без кнопок, виджет. Рядом будет предпросмотр, так что вы сможете сразу посмотреть, какое окно хотели бы создать в итоге. Мы выберем окно без кнопок Dialog without Buttons, т.к. сейчас задача просто открыть второе окошко.
Задаем окну осознанное имя (я назову его SecondWindow) и у нас теперь имеется новое пустое окно в режиме редактора. Добавим сюда текстовое поле с классическим «Hello word!» и перейдем к коду.

Напомню, мы хотим, чтобы второе окно открывалось по кнопке. Значит, нам нужно вернуться в основное окно и запрограммировать кнопку на определенные действия.
Возвращаемся в редактор и снова выбираем файл mainwindow.ui. Для задания действий правой кнопкой мыши нажимаем на нашей кнопке (уж простите за тавтологию) и выбираем пункт «Перейти к слоту». Мы увидим окно выбора действия. Т.к. действие должно происходить по нажатию, мы выбираем пункт clicked(). И попадаем в файл mainwindow.cpp, где для нас уже создана функция on_pushButton_clicked().

Также автоматически были созданы файлы для второго окна. У меня они называются secondwindow.h,secondwindow. cpp и secondwindow.ui. Для работы со вторым окном нам понадобится переменная типа «второе окно». Создадим же ее и добавим немного действий:
void MainWindow::on_pushButton_clicked()
{
SecondWindow wind;
wind.setModal(true);
wind.exec();
}
Обратите внимание! Для использования второго окна, его необходимо «подключить» к основному. Используем директиву #include «secondwindow.h» в файле mainwindow.cpp
Выше мы создали переменную для второго окна и из-под нее уже вызвали некоторый функционал: сделали окно модальным (второстепенным), и запустили его.
Возможные проблемы
В ходе написания кода или сборки может оказаться, что Qt все равно считает SecondWindow неизвестным форматом. Или при сборке мы встречаем ошибки Error C1083 и LNK2019: Unresolved External Symbol. Не спешите переходить в документацию и искать, что вы сделали не так.
В первую очередь проверьте отсутствие опечаток в именах (например,
SecondWidow вместо SecondWindow). Если уверены, что сделали всё
правильно, пересоберите проект насильно: Сборка -> Очистить проект ->
Запустить qmake.
Теперь мы можем запустить наш проект через Ctrl+R и получить окошко с кнопкой, по нажатию которой наше приложение наконец-то поздоровается с миром:


На этом пока все. Более подробное видео по ссылке в начале поста, а примеры кода можно посмотреть здесь.
