Первая программа на Qt:

Первая программа на 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();

Последние строки устанавливают окну класс компоновки с его виджетами и заставляют его стать видимым.

В итоге у вас должна получится программа:

lesson_1

Автор: tenebris
Дата: 06.08.2015
Поделиться:

Комментарии

  1. tenebris

    Спасибо за отзыв, прочту о новом синтаксисе, опишу его в следующей статье.

  2. equeim

    Я так понял, статьи пишутся на примере Qt5? Тогда лучше использовать новый синтаксис сигналов и слотов:

    QObject::connect(butt, &QPushButton::clicked, &qapp, &QApplication::quit);

    Подробнее:

    https://wiki.qt.io/New_Signal_Slot_Syntax

    http://doc.qt.io/qt-5/signalsandslots.html

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.