Установка и настройка Qt Creator | Losst

Библиотека Qt

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

Кросс-платформенная библиотека Qt, разработанная финской компанией Trolltech, ныне принадлежит корпорации Nokia. Qt реализована на языке программирования C++ и пользуется популярностью у, прежде всего, C++-программистов поскольку использует «родной» для них интерфейс. Возможности C++ в Qt значительно расширенны с помощью макросов и MOC (Meta Object Compiler): добавлены сигналы/слоты, появилось возможность использовать в собственных классах свойства (propperty). Но Qt не ограничена только лишь языком C++. Для программистов Python, Ruby, Php и Perl также реализованы интерфейсы взаимодействия, которые, как правило, используются для построения графического интерфейса пользователя. Программисты Java могут обратить внимание на проект Jambi, но его будущее очень туманно.

Область применения Qt

Если вы ранее не были знакомы с Qt, то перед вами может возникнуть вопросы: зачем мне изучать еще одну библиотеку или для решения каких задач применять Qt?

Из того, что Qt является кросс-платформенной, следует что с ее помощью можно создавать desktop-приложения для Windows, Linux, Mac OS X (как консольные, так и с оконным графическим интерфейсом). Однако разработчики Qt на этом не остановились. В последние несколько лет наблюдается тенденция увеличения количества выпускаемых мобильных устройств. Было бы по меньшей мере странным не портировать Qt на мобильные платформы: Symbian, Maemo, MeeGo. Также известно об удачном опыте портрования Qt Lighthouse на платформу Android.

Лицензирование Qt

Qt имеет тройное лицензирование:

  1. Qt Commercial — коммерческая лицензия, после приобретения которой вы можете выпускать программный продукт под собственной лицензией.
  2. GNU GPL — если вы open-source разработчик это ваш выбор.
  3. GNU LGPL — позволяет вести разработку под собственной лицензией, однако вы не можете вносить изменения в код Qt.

К сильным сторонам Qt можно отнести:

  • Кроссплатформенность: Qt работает как в настольных операционных системах Windows, Linux, Mac OS и др., так и мобильных ­ Symbian, Maemo, MeeGo.
  • Быстроту: часто кросплатформенные приложения, написанные на платформах Java и .Net Framework, оказываются очень медлительным из-за дополнительного уровня абстракции. Программы Qt являются компилируемыми C++-приложениями, т. е. не работают также быстро как и приложения С++.

Qt (software)

Полезные ссылки:

Qt (кьют) — это специальный фреймворк, который позволяет создавать приложения с графическим дизайном, базами данных и мощным функционалом. Написание таких программ в основном осуществляется на , но также можно использовать другие языки программирование: , , , Ruby и другие.

В ходе данного видео курса мы будем создавать приложения используя язык C++, поэтому перед началом курса стоит ознакомиться с этим языком. 

Пройти полный курс по этому языку 

C++ фрейморк Qt очень популярный, так как позволяет быстро и удобно создавать полноценное программное обеспечение, запуск и работа которого будет возможно практически на всех операционных системах (Mac, Windows, Linux и другие).

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

Фреймворк Qt был использован во множестве популярных программ и компаний, таких как: Skype, Телеграмм, Google, Panasonic, HP и многие другие.

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

#include <qapplication.h>
#include <qpushbutton.h>
int main( int argc, char **argv )
{
    QApplication a( argc, argv );          // ну понятно, что без аппликухи никуда 🙂
    QPushButton hello( "Привет, Мир!", 0 ); // Создаём простенькую кнопочку
    hello.resize( 100, 30 );                // растягиваем её, можно при желании и на весь экран 🙂
    a.setMainWidget( &hello );              // Делаем кнопку основным виджетом, это нужно для того, чтобы при закратии этой самой кнопки всё приложение завершило свою работу
    hello.show();                          // это чтобы нашу красоту все увидели 🙂
    return a.exec();                        // и как говориться "Поехали" copyright by Y. Gagarin 🙂
}

Разработка приложений с использованием Qt, часть 1

Оригинал: Developing Apps on Qt, Part 1
Автор: Manoj Kumar
Дата публикации: 31 января 2012 г.
Перевод: А.Панин
Дата публикации перевода: 5 ноября 2012 г.

Данная статья является вводной статьей серии, описывающей процесс разработки приложений с графическим интерфейсом на основе фреймворка Qt.

В течение длительного времени разработка приложений происходила без использования сторонних компонентов. Впоследствии появилась концепция повторного использования кода. Статические и разделяемые библиотеки создавались для использования в разработке приложений, но процесс эволюции на этом не остановился; разработчики приложений приступили к работе над программными фреймворками. Хотя библиотеки и фреймворки имеют ряд сходных функций, между ними существуют значительные отличия, которые необходимо понимать:

  • Библиотеки позволяют использовать концепцию повторного использования функций, в то время как фреймворки представляют возможность использовать концепцию изменения поведения. Например, библиотека может предоставлять классы для работы с TCP- и UDP-сокетами, в то время как фреймворк может представлять класс для абстрактного сокета.
  • Библиотека позволяет обрабатывать сигналы и события с помощью специальных функций, в то время как фреймворк предоставляет возможность взаимодействовать напрямую с системой и другими программными компонентами.
  • Функции библиотек вызываются из кода приложений, а фреймворк тесно интегрируется в приложение — или, можно сказать, дополняет код приложения.

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

Приложения для настольных компьютеров в значительной степени зависят от платформы, на которой они работают. Приложение, скомпилированное для ОС Linux, не может работать в другой операционной системе без использования эмуляторов по причине различий в системных вызовах и библиотеках в этих операционных системах. Необходимо было найти возможность разработки платформонезависимых приложений.

Одним из методов является разработка версий библиотек для всех необходимых платформ, не изменяя код приложения, а просто перекомпилируя его для каждой платформы. Этот подход облегчал жизнь разработчикам до того момента, как компания Sun Microsystems представила революционную концепцию виртуальных машин, подарив миру платформонезависимый язык программирования Java. Приложения Java исполняются при помощи виртуальной машины Java (Java Virtual Machine).

Software development made smarter

Код, написанный однажды, может быть развернут на любой платформе, для которой доступна виртуальная машина Java.

Но за все приходится платить. В случае с языком Java приходится расплачиваться производительностью. Производительность приложений на Java не настолько высока, как у приложений на C/C++, скомпилированных в машинный код. Другим недостатком является большое потребление памяти этими приложениями. Без сомнения, язык Java занимает лидирующие позиции, но на сегодняшний день существуют приложения, обрабатывающие большие объемы данных (например, в области биотехнологии) с особо жесткими требованиями к производительности. И снова мы сталкиваемся с необходимостью разработки приложений, компилируемых в машинный код. Разработка приложений на языке C занимает много времени, в то время как C++ является лучшим решением. Имеется ряд фреймворков, предназначенных для использования при разработке приложений на C++. Фреймворк Qt является одним из них.

Краткое описание Qt

Qt является кроссплатформенным фреймворком для разработки приложений от компании Trolltech, а на данный момент владельцем кода является компания Nokia (на момент перевода статьи компания Nokia передала разработку Qt компании Digia — прим.пер.). Фреймворк предоставляет API на языке C++. Qt часто используется разработчиками для разработки кроссплатформенных приложений.

При помощи Qt можно разрабатывать приложения с графическим интерфейсом, приложения, работающие с сетью, приложения, работающие с базами данных и мультимедийные приложения, работать с XML-структурами и 3D-графикой, осуществлять рисование и доступ к сетевым ресурсам. Поскольку поддерживается ряд платформ, Qt может работать на Linux, Mac OS, Windows, Meego, встраиваемых Linux-системах и Symbian.

Архитектура Qt

Простейшая схема, демонстрирующая архитектуру Qt, представлена на Рисунке 1.


Рисунок 1: Архитектура Qt

На верхнем уровне находится код программы на языке C++. Уровнем ниже расположены классы Qt для создания графического интерфейса, взаимодействия с WebKit, работы с базами данных и.т.д., а еще ниже расположен уровень поддержки различных операционных систем. Ранее Qt поддерживал также язык программирования Java; версия для языка Java называлась Jambie. По мере продвижения разработки Qt, становилось все сложнее поддерживать версии для C++ и Java, поэтому и было принято решение поддерживать только версию для C++.

Установка Qt

Методы установки отличаются в зависимости от операционной системы. В ОС Ubuntu 10.04 LTS я установил Qt при помощи менеджера пакетов Synaptic — при установке пакета qtcreator по зависимостям будут установлены Qt Assistant, Qt Designer, Qt Linguist и Qt Creator.

Если вы хотите попробовать новейшую версию Qt, можете скачать установочный пакет с официального сайта и установить его. От вас требуется только позволить исполнение установочного пакета как программы при помощи команды chmod и запустить его, после чего следовать инструкциям.

Программа ‘Hello World’ (без графического интерфейса)

Откройте терминал. Создайте директорию с названием first и простейшую программу «Hello World» со следующим кодом: #include<QtCore> int main(){ qDebug() < «Hello world\n»; }

Подключенный заголовочный файл QtCore содержит описания классов, не использующих графический интерфейс. Их мы рассмотрим в подробностях в следующих статьях. На данный момент будем просто использовать класс qDebug, который выводит отладочные сообщения в консоль и обладает функциями, эквивалентными cout при программировании на языке C++.

Как же скомпилировать эту программу? Разработчики из компании Trolltech представили простое решение для осуществления кроссплатформенной компиляции. Для начала должен быть создан файл проекта, на основе которого будет сгенерирован файл Makefile. После этого просто введите make для компиляции программы. Когда вы устанавливаете пакет Qt Creator, утилита qmake устанавливается вместе с ним. Она является кроссплатформенным генератором файлов Makefile для Qt. Чтобы узнать больше об этой утилите, обратитесь к странице руководства. Выполните команду qmake -project для создания файла проекта (файла с расширением .pro и именем, идентичным имени директории проекта, т.е. first). $ cat first.pro ###################################################################### # Automatically generated by qmake (2.01a) Mon Nov 28 05:49:29 2011 ###################################################################### TEMPLATE = app TARGET = DEPENDPATH += . INCLUDEPATH += . # Input SOURCES += main.cpp

Вы можете создавать как приложения, так и библиотеки; значением параметра TEMPLATE является app, говорящее о том, что разрабатывается приложение. Я затрону тему разработки библиотек в следующих статьях серии. Аргументом параметра SOURCES является список файлов исходного кода в рамках проекта, подробнее об этом будет сказано далее.

Теперь давайте сгенерируем файл Makefile при помощи утилиты qmake. Это длинный файл — он может содержать до 200 строк. Запустите команду make для компиляции исполняемого файла:

В последней строке вы можете заметить то, что наша программа использует также библиотеку для работы с потоками POSIX.

Запустите программу при помощи команды ./first, чтобы увидеть вывод «Hello World». Программа работает! Только что мы успешно скомпилировали нашу первую программу.

Программа с графическим интерфейсом

Qt предоставляет возможность визуального проектирования графических интерфейсов методом drag-and-drop и автоматического создания файлов описания графических интерфейсов, которую мы рассмотрим в следующей статье. Сейчас же мы опишем вручную графический интерфейс нашей новой программы: #include<QApplication> #include<QLabel> int main(int argc, char *argv[]){ QApplication a(argc, argv); Qlabel label; label.setText(«Hello World»); label.show(); a.exec(); }

В нашем первом примере у программы не было графического интерфейса. Программа завершалась при возвращении из функции main. Тем не менее, мы не можем поступить также в программах с графическим интерфейсом, поскольку программы будет невозможно использовать. Мы хотим, чтобы графический интерфейс работал до того момента, как пользователь закрывает окно. Для этого необходимо, чтобы программа работала в цикле до того, как пользователь закроет окно, поэтому следует использовать класс QApplication, в котором реализован цикл приема событий. Когда вы создаете экземпляр этого класса и вызываете его метод exec(), функция main не возвращает управления. Приложение находится в режиме ожидания событий от пользователя.

Второй заголовочный файл содержит описание класса QLabel, представляющего из себя простой виджет для вывода текста. Создайте экземпляр этого класса и установите текст «Hello World». При вызове метода show() виджета, он отображается в виде окна. Таким образом, виджет будет выглядеть как окно. На Рисунке 2 можно увидеть это окно с заголовком. Вы можете изменить размеры окна просто при помощи мыши.


Рисунок 2: Виджет строки

В следующих статьях мы рассмотрим основные классы Qt. Между тем, я рекомендую вам внимательно рассмотреть официальную документацию Qt.

Если вам понравилась статья, поделитесь ею с друзьями:


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) и получить бинарный файл способный запускаться там без особых хлопот.

Библиотека Qt

Как показала практика, особые хлопоты начинаются когда приложение становится сильно обвешенным сторонними библиотеками.

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

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

Похожее

  

[Предыдущий: Учебное пособие] [Учебное пособие] [Следующий: Урок 2]

Урок 1 — Hello World!

Файлы:

Наша первая программа будет традиционной, она выводит на экран «Hello world». Она содержит необходимый минимум для получения и запуска приложения Qt. Скомпилировав ее вы увидите на экране следующее:

Вот полный исходный код данного приложения:

#include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello(«Hello world!»); hello.show(); return app.exec(); }

Разберем программу строка за строкой

#include <QApplication>

В этой строке мы подключаем описание класса QApplication. В каждом приложении Qt с графическим интерфейсом (GUI) обязательно должен быть только один объект QApplication. QApplication управляет различными ресурсами приложения, такими как шрифт по умолчанию и курсор.

#include <QPushButton>

В этой строке подключается описание класса QPushButton. Для каждого класса, являющегося частью открытого API Qt, существует заголовочный файл с таким же именем, содержащий его определения.

QPushButton — это графическая кнопка, которую пользователь может нажимать и отпускать. Кнопка управляет собственным внешним видом и поведением, как все остальные объекты QWidget. Виджет — это объект пользовательского интерфейса, который может обрабатывать ввод пользователя и рисовать графические изображения. Программист может изменить как внешний вид, так и поведение виджета, а также многие второстепенные свойства (например, цвет) так же, как и содержимое виджета. На кнопке QPushButton может быть отображен текст или пиктограмма QIcon.

int main(int argc, char *argv[]) {

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

Параметр — количество аргументов командной строки, а — массив этих аргументов. Это стандартная функция C++.

QApplication app(argc, argv);

Объект является экземпляром класса QApplication в данной программе. Здесь мы его создаём. Мы передаём параметры и в конструктор QApplication, чтобы он мог обработать определенные стандартные аргументы командной строки (например, при работе с X11). Все переданные аргументы, обработанные Qt, будут удалены из , а соответственно уменьшен. За подробностями обращайтесь к QApplication::arguments().

Объект QApplication должен быть создан прежде, чем вы начнете работать с возможностями Qt, связанными с графическим интерфейсом пользователя.

QPushButton hello(«Hello world!»);

Здесь сразу после создания экземпляра объекта QApplication следует первый код, оперирующий с графическим интерфейсом: создаётся кнопка.

Кнопка создается с надписью «Hello world!». Поскольку мы не указали родительское окно (в качестве второго аргумента в конструкторе QPushButton), то кнопка будет являться отдельным окном, с собственной оконной рамкой и заголовком.

Размеры кнопки устанавливаются с помощью подсказок размера (size hint).

Мы могли бы также задать местоположение кнопки, вызвав метод QWidget::move(), но вместо этого позволяем системе управления окнами выбрать местоположение самостоятельно.

hello.show();

При создании виджет всегда является невидимым. Чтобы сделать его видимым, необходимо вызвать метод QWidget::show().

return app.exec(); }

В этом месте передаёт управление в Qt. QCoreApplication::exec() вернёт значение, когда приложение закончит работу. (QCoreApplication является базовым классом для QApplication. Он реализует ядро QApplication, функциональность, не связанную с графическим интерфейсом, и может быть использован при разработке приложений без графического интерфейса пользователя.)

В методе QCoreApplication::exec() происходит обработка всех пользовательских и системных событий и передача управления соответствующим виджетам.

Теперь можно скомпилировать нашу программу и запустить ее.

Переменные окружения

Если вы разрабатываете приложения с Qt в командной строке, то вам необходимо добавить путь к каталогу Qt в вашу переменную PATH, чтобы обеспечить доступность библиотек и исполняемых файлов Qt для вашего окружения; это описано в инструкциях по Установке для вашей платформы.

В Windows это автоматически выполняется за вас, когда вы запускаете интерпретатор командной строки из меню Пуск>Программы>Qt (Start>All Programs>Qt). Если же вы запускаете интерпретатор командной строки с помощью Пуск>Выполнить>Command (Start>Run>Command), то вы должны установить переменную PATH самостоятельно.

Сборка приложения

Примеры учебного пособия находятся в каталоге examples/tutorials/tutorial. Если вы установили бинарный пакет Qt, предварительно собранные примеры также будут установлены. Если вы собираете Qt самостоятельно, то вместе с Qt будут собраны и примеры. В любом случае, вы узнаете многое об использовании Qt самостоятельно модифицируя и собирая примеры.

Предполагая, что вы скопировали файлы примера и в другой пустой каталог и внесли в них изменения, следующим шагом будет создание make-файла Qt в этом каталоге. Для создания make-файла Qt используйте qmake — поставляемый вместе с Qt инструмент для сборки. Чтобы создать make-файл выполните следующие две команды в каталоге, где находятся модифицированные вами исходные коды.

qmake -project qmake

Первой командой мы создаем файл проекта (). Вторая команда указывает qmake использовать файл для создания платформо-специфичного make-файла.

Теперь вы можете запустить (, если вы используете Visual Studio) для компиляции программы, а затем вы можете запустить ваше первое приложение Qt!

Запуск примера

Когда вы запустите пример вы увидите небольшое окно с единственной кнопкой.

Часть 1. Введение. Инструменты разработчика и объектная модель

На кнопке вы можете прочитать знаменитые слова: «Hello world!»

Домашнее задание

Попробуйте изменить размеры окна. Нажмите на кнопку. Если у вас запущен X11, попробуйте запустить программу с опцией (например, ).

[Предыдущий: Учебное пособие] [Учебное пособие] [Следующий: Урок 2]


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *