Первая программа на Qt:
Qt – это мощный инструментарий, имеющий множество способов для воплощения задумок программиста в жизнь. Давайте начнём его освоение с самой первой программы
Итак, у вас под рукой имеется среда разработки QtCreator с подключенным к ней компилятором(например MinGW). В среде разработки выбираем Другой проект-> Проект с поддиректориями.
Название: cppstudio. Здесь для удобства мы будем хранить все приложения взятые с сайта. Создадим здесь под проект QWidget с название lesson_1 и удаляем в нём файлы mainwindows.h, mainwindows.cpp, и форму.
Переписываем код программы печатающей на экран «Привет мир!» в main.cpp:
#include <QApplication>
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication qapp(argc, argv);
QHBoxLayout * hlayout = new QHBoxLayout;
QLabel *label = new QLabel("Привет мир!");
QPushButton *butt = new QPushButton("Exit");
QWidget *mainWindow = new QWidget;
QObject::connect(butt,SIGNAL(clicked()),&qapp,SLOT(quit()));
hlayout->addWidget(label);
hlayout->addWidget(butt);
mainWindow->setLayout(hlayout);
mainWindow->show();
return qapp.exec();
}
Давайте разберём код программы:
В строчках 1-4 идёт подключение нужных заголовочных файлов.
В qt за графический интерфейс пользователя отвечает семейство классов <QWidget>. Так как нам понадобятся виджеты, то в первую очередь прописываем нужные библиотеки(QLabel, QPushButton).
#include <QApplication> QApplication qapp(argc, argv);
Одноимённый класс, подключаемый через заголовочный файл QApplication нужен в любом Qt-проекте в единственном экземпляре. Он отвечает за отслеживание событий и сообщений в системе, изменения вида окон приложения и другие полезные функции.
QHBoxLayout * hlayout = new QHBoxLayout;
QLabel *label = new QLabel("Hello World");
QPushButton *butt = new QPushButton("Exit");
QWidget *mainWindow = new QWidget;
В этой части через динамическую память резервируется место под классы.
QObject::connect(butt,SIGNAL(clicked()),&qapp,SLOT(quit()));
Через метод класса QObjekt::connect(&Отправитель,SIGNAL(сигнал()),получатель,SLOT(слот())) реализуется механизм сигналов и слотов. В данном случае при нажатии кнопки приложения генерируется сигнал clicked(), который активирует слот quit() и приводит к закрытию приложения.
layout->addWidget(label); layout->addWidget(butt);
Для расположения и компоновки виджетов “в сетке”, горизонтально или вертикально используются классы QHBoxLayout, QGridLayout, QHBoxLayout. Метод-член addWidget добавляет их в менеджер компоновки.
mainWindow->setLayout(hlayout); mainWindow->show();
Последние строки устанавливают окну класс компоновки с его виджетами и заставляют его стать видимым.
В итоге у вас должна получится программа:

Комментарии
tenebris
Спасибо за отзыв, прочту о новом синтаксисе, опишу его в следующей статье.
equeim
Я так понял, статьи пишутся на примере Qt5? Тогда лучше использовать новый синтаксис сигналов и слотов:
Подробнее:
https://wiki.qt.io/New_Signal_Slot_Syntax
http://doc.qt.io/qt-5/signalsandslots.html