Программирование на c в среде qt creator. Установка и настройка Qt Creator. Установка Qt Creator

Не была бы тем чем она является без того, что называется proof-of-concept . И в данном случае роль этого доказательства играет Qt Creator — среда разработки под Qt с открытым исходным кодом, написанная полностью на ней самой.

Qt Creator может показать изумительно аскетичной IDE, особенно после работы и программирования в чем-либо другом. Между тем, среда содержит все необходимое для работы и является довольно продуманной. Qt Creator поставляется в пакете вместе с самой библиотекой Qt. . Выбирайте способ (онлайн, оффлайн), платформу и вперед (Примечание: описанный способ может измениться в будущем, но в любом случае — скачивайте дистрибутив библиотеки только с официального сайта ). Установка является довольно простой и особых сюрпризов не несет.

Кстати, под Linux и Mac OS X существует также вариант установки через репозитарий вашего дистрибутива (через brew в Mac OS X или apt в Ubuntu), но в этом случае вы рискуете получить не самую свежую версию библиотеки.

После скачивания и установки остается запустить Qt Creator и начать разрабатывать.

Среда имеет три темы (тема Flat появилась в 4.0) интерфейса и несколько вариантов расцветки синтаксиса кода. При желании цвета синтаксиса можно изменить на любые другие. Как и генеральный цвет IDE.

Плюсом для начинающих знакомство с Qt станет встроенная коллекция примеров на любую тему. Выбираем пункт Начало , кликаем по кнопке Примеры , и выбираем интересующий. Qt Creator предложит сразу же подготовить пример для последующей сборки и запуска. Это очень удобно и позволяет вживую посмотреть на возможности Qt.

Примеры очень хорошо помогут после некоторого времени ознакомления со средой и Qt. Основная фишка Qt Creator — встроенная справка, позволяющая не выходя из среды получать информацию о любом классе и его методах и свойствах. Достаточно встать на имя класса или экземпляре и нажать F1. Сбоку появится окно справки, аналогичное документации с https://doc.qt.io/ — главного справочного портала Qt.

Если нет желания делить рабочее пространство с справочным окном и хочется вдумчивого чтения, можно кликнуть по кнопке Справка в левом сайдбаре. Вкладка Проекты позволяет настроить некоторые этапы сборки и запуска проекта, Отладка переключает среду в соответствующий режим, кнопка Дизайн становится активной при редактировании.ui файлов интерфейса. В окне Редактор происходит главное действо — написание кода. Со всем этим мы разберемся позже.

В нижней левой части экрана расположены манящие нажать кнопки создания билда, отладочного запуска и запуска приложения. А так же режим сборки — Отладка, Релиз и Профилирование.

Наигравшись вдоволь со средой можно переходить к созданию своего собственного проекта.

Это кросс-платформенный инструментарий разработки ПО на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python - PyQt, Ruby - QtRuby, Java - Qt Jambi, PHP - PHP-Qt и другие.
Позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.
В этой статье я покажу как написать простую программу «Hello, World!» с использованием библиотеки Qt4

Среда разработки

Сначала определимся со средой разработки. Лично я для написания программа использую кросс платформенную IDE Code::Blocks (подробнее про работу в этой IDE с Qt4 можно почитать ). Так же есть плагины для работы с Qt в Eclipse. Коммерческая версия Qt под MS Windows может быть интегрирована в MSVS. Программы так же можно писать в любом текстовом редакторе, а потом компилировать их из командной строки.
Для наглядности, я покажу как компилировать программы, написанные на Qt, вручную.

Первая программа

Сначала в любом текстовом редакторе создадим файл и назовем его, например, main.cpp
Напишем в нем следующее:
  1. #include
  2. #include
  3. QApplication app(argc, argv);
  4. QDialog *dialog = new QDialog;
  5. QLabel *label = new QLabel(dialog);
  6. label->setText("Hello, World!" );
  7. dialog->show();
  8. return app.exec();

В строках 1 и 2 мы подключили заголовочные файлы Qt в которых находятся основные классы.
В строке 4 мы объявили функцию main - главную функцию, с которой начинается выполнение любой программы. Она возвращает целое число (результат работы программы; 0 - если все в порядке) и принимает на вход две переменные - число параметров командной строки и массив, в котором они сохранены.
В строке 5 мы создаем объект приложения. Этому объекту мы передаем переменные командной строки.
В строке 6 мы создаем диалог - графическое окно прямоугольной формы, с заголовком и кнопками в верхнем правом углу. Создаем метку (строка 7). При создании метки мы передаем ее конструктору указатель на диалог, который становится ее родителем. При удалении родителя автоматически удаляются все его потомки, что очень удобно. Затем устанавливаем надпись метки путем вызова функции setText() (строка 8). Как видно из примера, для отображаемого текста можно использовать html-теги.
В строке 9 мы отображаем наше диалоговое окно с меткой на экране.
И, наконец в строке 10 мы запускаем цикл обработки событий операционной системы приложением. Результат работы объекта мы возвращаем как результат работы программы.

Компиляция

Теперь скомпилируем написанную программу.
Перейдем в каталог, куда мы сохранили наш файл main.cpp и выполним команду

$ qmake -project

При этом произойдет создание заготовки проекта Qt4, в который автоматически будут включены все файлы исходных кодов, лежащих в данной директории. В результате получится файл с именем как у текущей директории и расширением.pro. Он будет выглядеть следующим образом:

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
SOURCES += main.cpp

В результате мы получим Makefile, который используем для того что бы скомпилировать программу, выполнив следующую команду:

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

Вторая программа

Что бы получить полный контроль над создаваемыми окнами и другими виджетами, необходимо создавать производные от них классы. Создадим производный класс MyDialog. В качестве родительского будем использовать класс QDialog. Описание нашего класса поместим в заголовочный файл mydialog.h:
  1. #include
  2. #include
  3. #include
  4. #include
  5. class MyDialog: public QDialog {
  6. Q_OBJECT
  7. public :
  8. MyDialog(QWidget *parent = 0);
* This source code was highlighted with Source Code Highlighter .
В первых четырех строках мы подключаем необходимые заголовочные файлы используемых графических элементов - диалога, кнопки, надписи и вертикального менеджера компоновки. Использовать такие крупные заголовочные файлы как , и др. в больших проектах не рекомендуется, так как это увеличивает время компиляции.
В шестой строке мы определили наш класс производным от QDialog.
На следующей строчке мы указали макрос Q_OBJECT, который указывает предпроцессору Qt что данный класс будет использовать дополнительные возможности Qt, например, систему сигналов и слотов.
На строке 9 мы указываем конструктор нашего диалогового окна. У него только один входной параметр - указатель на родительский объект (0 если родителя нет).
Конструктор нашего класса мы определим в файле mydialog.cpp:
  1. #include "mydialog.h"
  2. MyDialog::MyDialog(QWidget *parent) : QDialog(parent) {
  3. QVBoxLayout *layout = new QVBoxLayout(this );
  4. QLabel *label = new QLabel(this );
  5. label->setText("Hello, World!" );
  6. QPushButton *button = new QPushButton(this );
  7. button->setText("Close" );
  8. layout->addWidget(label);
  9. layout->addWidget(button);
  10. connect(button, SIGNAL(clicked()), this , SLOT(close()));
* This source code was highlighted with Source Code Highlighter .

В строке 4 мы создаем менеджер компоновки, который будет автоматически отображать все добавленные в него виджеты вертикально. Создание надписи аналогично предыдущему примеру.
В строках 7 и 8 создаем кнопку и устанавливаем ее текст. На следующих двух строчках мы добавляем наши виджеты в менеджер компоновки что бы он их автоматически упорядочил.
В строке 11 мы подключаем сигнал нажатия clicked() кнопки button к слоту close() нашего диалогового окна. У каждого объекта Qt могут быть свои сигналы и слоты, которые можно подключать к сигналам и слотам других объектов и таким образом осуществлять коммуникацию между элементами программы.
Файл main.cpp примет следующий вид:
  1. #include
  2. #include "mydialog.h"
  3. int main(int argc, char * argv) {
  4. QApplication app(argc, argv);
  5. MyDialog *dialog = new MyDialog;
  6. dialog->show();
  7. return app.exec();
* This source code was highlighted with Source Code Highlighter .

Пересоздаем проект командой

$ qmake -project

Что бы новые файлы автоматически в него добавились и компилируем его. Вот так выглядит наша новая программа:

Третья программа

Если диалоговое окно содержит много графических элементов, то создавать такие окна довольно утомительно. Для упрощения этого процесса есть инструмент под названием Qt Designer. Запускаем его

И выбираем создание диалогового окна без кнопок. Добавляем на него метку и кнопку, редактируем их текст. С помощью инструмента редактора сигналов и слотов (Signal/Slot Editor) подключаем сигнал нажатия clicked() кнопки button к слоту close() диалогового окна. Располагаем их вертикально с помощью менеджера компоновки. Сохраняем полученный файл под именем mydialog.ui. Позже он будет автоматически преобразован в заголовочный файл с именем ui_mydialog.h.
Изменяем заголовочный файл нашего диалогового окна mydialog.h следующим образом:

Начинающий программист постоянно сомневается, какие технологии начать осваивать эту или какую-нибудь другую. Нужно ли начинающему программисту изучать Qt? Однозначно, нужно! Например, почитайте этот пост или поищите что-нибудь в интернете. Всё ещё не уверены нужен ли Вам Qt? Если Вы пишите на С++, Qt вы должны знать, у Вас просто нет другой альтернативы.

Итак, поехали...

Давайте, для примера, напишем простенький калькулятор - сложение двух чисел.

Создаём новый проект. Как мы видем, существует несколько типов приложений. Мы как начинающие, выбираем "Приложение Qt Widgets":

Указываем имя проекта и папку для размещения файлов, у меня: C:\projects\qt

Qt автоматически генерирует следующие файлы:

  • lesson1.pro - файл проекта
  • main.cpp - главный файл с фукнцией main()
  • mainwindow.cpp - исходный код главного окна
  • mainwindow.h - заголовочный файл главного окна
  • mainwindow.ui - файл формы главного окна

Нажимаем кнопку "Завершить" - открывается редактор для разработки программ на Qt.

Пока должно быть всё понятно для начинающего Qt-разработчика...

Открываем главную форму (для этого переходим в mainwindow.ui).

Слева располагаются компоненты для создания экранной формы, справа сама форма, она пустая. Накидаем нужные компонентики, незабудем поля ввода QLineEdit назвать так: edtA, edtB и edtC соответственно.

Мы видем на экране поля ввода, подписи к ним слева и кнопку "A + B =". При нажатии на эту кнопку мы должны сложить A и B и поместить результат в C.

Как быть? Любой начинающий Qt-разработчик предположит, что нужно навесить на кнопку обработчик нажатия этой кнопки и он будет прав! В любых других фреймворках есть такое понятие как событие . Но в Qt решили выпендриться и придумали сигналы/слоты. Хотя, по сути, это, практически, тоже самое.

Кликаем правой кнопкой мыши на кнопку "A + B =", открывается всплывающее меню:

жмём на "Перейти к слоту"

Выбираем сигнал clicked() , и в открывшемся редакторе кода пишем небольшой программный код на Qt:

Void MainWindow::on_btnOK_clicked() { int a = ui->edtA->text().toInt(); // Берем текст edtA и преобразовываем его в число a int b = ui->edtB->text().toInt(); // Берем текст edtB и преобразовываем его в число b int c = a + b; // Складываем числа QString s = QString::number(c); // Преобразуем результат в строковый вид ui->edtC->setText(s); // Вывести результат в edtC }

Функция обработки сигнала clicked() называется слотом on_btnOK_clicked().

tl;dr — Qt библиотека для создания кроссплатформенных оконных приложений на C++.

Qt, как проект, зародился из желания разработчиков C++ иметь удобный инструментарий разработки графических интерфейсов программ (GUI). Если, например, в Java для этих целей из коробки идет AWT, а в Python Tk, то в С++ не было ничего подобного. И не только того что касается разработки GUI, а так же классов работы с сетью, мультимедиа и прочих очень востребованных вещей. Чему очень досадовали разработчики. Ну а раз есть спрос, то предложение не заставило себя долго ждать. В 1995 году вышел первый релиз библиотеки. С тех пор Qt быстро стал расширяться за пределы всего-лишь разработки интерфейсов.

Поэтому, Qt стоит рассматривать не столько набор классов для создания GUI, а скорее как полноценный инструментарий классов на все случаи жизни. Этот набор всего (ну или почти всего) что может потребоваться программисту-прикладнику для создания практически любого приложения. Структура библиотеки логично разбита на компоненты, их очень много и с каждой новой версией Qt в них становится все больше и больше полезных классов.

Основных компонента два — QtCore являющий собой ядро библиотеки и QtGui представляющий компоненты графического интерфейса. Как мы в дальнейшем увидим, создаваемый проект всегда имеет при себе два этих компонента (за исключение консольных приложений, в которых обязательную роль играет QtCore).

Ну а далее, в зависимости от потребностей, разработчики вольны использовать все что душе угодно. QtNetwork для работы с сетью, написать свой Torrent-клиент. QtMultimedia для реализации видео-аудио плеера. QtWebEngine для встраивания в свое приложение полноценного браузерного движка. И многое другое.

Стоит так же отметить, что заявленная кроссплатформенность действительно присутствует. Вы можете взять свой код разрабатываемый на одной системе (Windows, MinGW) и скомпилировать ее компилятором другой системы (Linux, GCC) и получить бинарный файл способный запускаться там без особых хлопот. Как показала практика, особые хлопоты начинаются когда приложение становится сильно обвешенным сторонними библиотеками.

Приятным бонусом для веб-разработчиков станет возможность разрабатывать программы не только на C++, но и языке QML, сильно схожим с JavaScript. Это особая ветка развития Qt, направленная на быстрое прототипирование и разработку мобильных приложений.

Ну и конечно же, одной из изюминок Qt является среда разработки Qt Creator. Универсальная и очень удобная среда разработки на Qt, не перегруженная лишним функционалом, .

С каждым годом становится все больше операционных систем, и потому разработчикам все труднее удовлетворять потребности пользователей. Три самые популярные компьютерные платформы - Windows, Linux и Mac OS, а также три мобильные - Android, iOS и Windows Mobile - продолжают активно бороться между собой. А это значит, что качественное приложение должно работать на всех основных платформах.

Справиться с этой проблемой помогает кроссплатформенная разработка. Об одной из самых популярных кроссплатформенных сред разработки - Qt Creator - и пойдёт речь в этой статье. Мы рассмотрим как выполняется установка и настройка Qt Creator, а также как работать в Qt Creator.

Что такое Qt Creator

Qt Creator (не так давно имевший название Greenhouse) - это одна из самых распространенных кроссплатформенных IDE. Ее плюсы - удобство, быстрота работы, а также - свободность, так как это ПО с открытым исходным кодом. Поддерживаются такие языки, как C, С++, QML.

Программа была написана компанией под названием Trolltech, которая в полной мере выполнила цель создания среды - работу с графическим фреймворком Qt. Удобный графический интерфейс с поддержкой Qt Widgets и QML, а также большое число поддерживаемых компиляторов позволяют быстро и удобно создать свое кроссплатформенное приложение.

Главная задача этой IDE - обеспечить наиболее быструю кроссплатформенную разработку, используя собственный фреймворк. Благодаря этому разработчики получают прекрасную возможность не писать приложения нативно (т. е. отдельно под каждую платформу), а создать общий код, и, возможно, подогнать его под особенности используемых ОС.

Qt Creator также включает в себя утилиту Qt Designer, что позволяет обработать внешний вид окна приложения, добавляя и перетаскивая элементы (аналогично Windows Forms в Visual Studio). В качестве систем сборки используются qmake, cmake и autotools.

Установка Qt Creator

Итак, пора рассмотреть как установить Qt Creator. Если для Windows разработчики позаботились и сделали оффлайн-установщик, то в Linux 32-bit этой возможности не предусмотрено. Поэтому во время установки вам может потребоваться стабильное интернет-соединение (~20-30 минут). Для начала скачаем установщик:

  • Скачать Qt Creator для Linux 32-bit (нажимаем "View other options" ).
  • Скачать Qt Creator для Linux 64-bit.

После окончания загрузки переходим в папку с файлом, нажимаем правой кнопкой мыши и выбираем пункт "Свойства" .

Теперь перейдем на вкладку "Права" и поставим галочку "Разрешить запуск этого файла в качестве программы" .

Запускаем программу.

Теперь нажимаем "Next" .

Здесь необходимо выбрать существующий аккаунт или создать его. Данное действие необходимо для проверки лицензии (коммерческой или некоммерческой).

Нажимаем "Next" .

Выбираем директорию, в которой будет находиться Qt. Важно, чтобы в пути не было кириллицы и пробелов!

В этом меню находится выбор компонентов. К примеру, можно выбрать установку инструментов для разработки на Android, или же исходных компонентов (это нужно для статической сборки, если кому-то это нужно - напишите в комментариях, и я напишу отдельную статью). Если Вы не уверены, нужны Вам эти компоненты или нет, оставьте их пока так - даже после установки Qt будет возможным удаление и добавление элементов.

В этом окне принимаем лицензию. Жмем "Next" .

Если Вы готовы, начинайте установку. У Вас запросят пароль суперпользователя (sudo), после чего начнется скачивание и извлечение файлов. Альтернативный способ - установка через терминал. Для начала необходимо обновить список пакетов.

Скачиваем и устанавливаем Qt:

sudo apt install qt5-default

Теперь установка Qt Creator:

sudo apt install qtcreator

И, если нужно, исходники.

sudo apt install qtbase5-examples qtdeclarative5-examples

Настройка Qt Creator

После окончания установки перезагрузите компьютер и запустите Qt Creator. Перейдите в меню "Инструменты" -> "Параметры" .

Здесь следует рассмотреть несколько вкладок.

1. Среда - это настройка внешнего вида самой IDE, а также изменение сочетаний клавиш и управление внешними утилитами.

2. Текстовый редактор - здесь идет настройка внешнего вида, шрифтов и расцветки редактора.

3. C++ - подсветка синтаксиса, работа с расширениями файлов и UI (т. е. формами).

4. Android - здесь собраны пути к необходимым инструментам, а также в этом меню настраиваются подключаемые или виртуальные устройства.

Установка компонентов Qt Creator

Если вдруг так случилось, что Вы забыли установить какой-то компонент, или, наоборот, хотите его удалить, то на помощь придет Qt Maintenance Tool. Это инструмент, позволяющий управлять всеми компонентами Qt Creator.

Чтобы запустить его, перейдите в меню приложений, выберите пункт "Разработка" -> "Qt Maintenance Tool" .

Выберите необходимый пункт (Удалить/добавить компоненты, обновить компоненты или удалить Qt). После выполните необходимые операции и закройте окно.

Работа с Qt Creator - первый проект

Ну что же, час пробил! Установка Qt Creator завершена. Пора сделать свое первое кроссплатформенное приложение на Linux, а затем скомпилировать его на Windows. Пусть это будет... программа, выводящая иконку Qt, кнопку и надпись, на которую по нажатию кнопки будет выводиться случайная фраза. Проект несложный, и, конечно же, кроссплатформенный!

Для начала откроем среду разработки. Нажмем "Файл" -> "Создать файл или проект..." . Выберем приложение Qt Widgets - его быстро и удобно сделать. А название ему - "Cross-Platphorm" . Вот как!

Комплект - по умолчанию. Главное окно тоже оставляем без изменений. Создаем проект.

Для начала необходимо настроить форму - главное окно приложения. По умолчанию оно пустое, но это не останется надолго.

Перейдем в папку "Формы" -> "mainwindow.ui" . Откроется окно Qt Designer:

Удаляем панель меню и панель инструментов на форму, нажав правой кнопкой мыши и выбрав соответствующий пункт. Теперь перетаскиваем элементы Graphics View, Push Button и Label таким образом:

Чтобы изменить текст, дважды кликните по элементу. В свойствах Label (справа) выбираем расположение текста по вертикали и по горизонтали - вертикальное.

Теперь пора разобраться с выводом иконки. Перейдем в редактор, слева кликнем по любой папке правой кнопкой мыши и выберем "Добавить новый..." . Теперь нажимаем "Qt" -> "Qt Resource File" . Имя - res. В открывшемся окне нажимаем "Добавить" -> "Добавить префикс" , а после добавления - "Добавить файлы" . Выбираем файл, а в появившемся окне "Неверное размещение файла" кликаем "Копировать" .

Получилось! Сохраняем все. Снова открываем форму. Кликаем правой кнопкой мыши по Graphics View, выбираем "styleSheet..." -> "Добавить ресурс" -> "background-image" . В левой части появившегося окна выбираем prefix1, а в правой - нашу картинку. Нажимаем "ОК" . Настраиваем длину и ширину.

Все! Теперь можно приступать к коду. Клик правой кнопкой мыши по кнопке открывает контекстное меню, теперь надо нажать "Перейти к слоту..." -> "clicked()" . В окне набираем следующий код:

Или вы можете скачать полный проект на GitHub . Работа с Qt Creator завершена, нажимаем на значок зеленой стрелки слева, и ждем запуска программы (если стрелка серая, сначала нажмите на значок молотка). Запустилось! Ура!