Опубликован: 07.03.2015 | Уровень: для всех | Доступ: свободно | ВУЗ: Компания ALT Linux
Лекция 11:

Знакомство с Qt. Подготовка к работе

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >
Аннотация: Рассказывается о кроссплатформенном инструментарии разработки Qt, политике его лицензирования и настройках.

11.1 Знакомство с Qt. Обзор истории

Кроссплатформенный инструментарий разработки Qt появился впервые в 1995 году благодаря своим разработчикам Хаарварду Норду и Айрику Чеймб- Ингу. С самого начала создавался как программный каркас, позволяющий создавать кроссплатформенные программы с графическим интерфейсом. Первая версия Qt вышла 24 сентября 1995. Программы, разработанные с Qt, работали как под управлением операционных систем семейства Microsoft Windows™ так и под управлением Unix-подобных систем.

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

В июне 1999 года вышла вторая версия — Qt 2.0. А в 2000 году состоялся выпуск версии для встраиваемых систем, который назывался Qt Embedded. Версия Qt 3.0 — 2001 год — работала в ОС семейства Windows™ и многих Unix-подобных ОС, таких как MacOS, xBSD, в различных вариантах Linux для персональных компьютеров и встраиваемых систем. Он имел 42 дополнительных класса, объём вырос до более чем 500 000 строк кода. Летом 2005 года состоялся выпуск Qt 4.0, который включал в совокупности около 500 классов и имел огромное количество существенных улучшений. Вместе с выпуском Qt 4.5 вышло и специализированная интегрированная среда разработки QtCreator.

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

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

Инструментарий разработки Qt используют для создания кроссплатформенных программ. Здесь под этим утверждением мы подразумеваем программы, исходный текст которых можно скомпилировать на разных программных платформах (различные разновидности Linux, Windows, MacOS и т.д.) практически без изменений или с незначительными изменениями. Кроме того Qt используют и для разработки программ, имеющих характерный ("родной", native) для программного окружения или даже собственный стилизованный интерфейс. Всё это благодаря открытому свободному программному коду, удобному и логическому API и широким возможностям применения.

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

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

Программный код, зависящий от оконной системы в Qt5, был отделён и реорганизован в отдельные библиотеки расширения, что позволило упростить перенос Qt на новые платформы и адаптации для поддержки других оконных систем. Благодаря QPA (Qt Platform Abstraction) в Qt5 реализована поддержка многих платформ для мобильных устройств.

Несмотря на эти изменения и усовершенствования, большинство программного кода созданного для Qt4 совместимо с Qt5 и компилируется с новой версией почти без изменений. Почти весь материал следующих разделов и примеры подходят для изучения как Qt4, так и Qt5. Большая часть изменений в Qt5 касается разделения на модули.

11.1.1 Основные составляющие Qt

Рассмотрим основные составляющие кроссплатформенного средства разработки Qt: модули и инструменты.

На рис. 11.1 изображены основные составляющие Qt. Модули и инструменты доступны для разработки под целевые (Reference) и другие (Other) платформы. Средства Qt разделены по назначению на отдельные части — модули. Каждый из модулей выполнен в виде отдельной библиотеки. Разработчик имеет возможность выбрать модули, которые он использует в программе. Модули имеют взаимозависимости: одни модули используют возможности, которые предоставляют другие. Основу составляют основные (Essentials) модули:

Состав Qt5

увеличить изображение
Рис. 11.1. Состав Qt5
  • Qt Core — основной модуль, который содержит все базовые средства Qt. На его основе построены все другие модули. Каждая программа созданная с использованием Qt, использует этот модуль;
  • Qt Network — модуль для работы с сетевыми средствами;
  • Qt Gui — модуль поддержки графического вывода на экран. В Qt4 он также содержит содержит набор виджетов для создания графического интерфейса пользователя. В Qt5 виджеты вынесены в отдельный модуль;
  • Qt Widgets — модуль, который содержит набор виджетов для создания графического интерфейса пользователя (Qt5);
  • Qt WebKit — средства работы с Веб;
  • Qt WebKit Widgets — виджеты для работы с Веб (Qt5);
  • Qt Multimedia — средства работы с мультимедийными устройствами и файлами;
  • Qt Multimedia Widgets — виджеты для работы с мультимедийными устройствами и файлами (Qt5);
  • Qt Sql — средства работы с базами данных;
  • Qt Qml — поддержка декларативной языка QML для разработки динамических визуальных интерфейсов (Qt5);
  • Qt Quick — поддержка создания динамических визуальных интерфейсов (Qt5);
  • Qt Quick Controls — использование технологии QtQuick для создания традиционного для рабочих столов графического интерфейса (Qt5);
  • Qt Quick Layouts — компоновка для элементов QtQuick (Qt5).

Существует также много дополнительных (Add-On) модулей. Стоит заметить, что разделение на основные и дополнительные модули характерно Qt5 в отличие от предыдущих версий. Названия некоторых модулей в Qt5 по сравнению с Qt4 были изменены, а некоторые средства были вынесены в отдельные или перенесены в другие модули. Эти изменения необходимо учитывать при переносе программ, которые были разработаны с использованием Qt4. Почти все примеры, которые мы будем рассматривать, работают как с Qt4 так и Qt5. В случаях, когда это существенно, мы будем указывать на отличия.

Кроме модулей, в состав инструментария входят инструменты разработки, исходные тексты Qt, примеры программ и документация.

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?