Home Wiki > Qt
Sign up | Login

Qt

tagline: Материал из openSUSE

О программе

Набор инструментов Qt - это кросс-платформенный набор графических элементов интерфейса пользователя для разработки программ с графическим интерфейсом. Qt используется в K Desktop Environment. Qt выпускается финской компанией Nokia. Qt произносят как "cute".

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

Разнообразие Qt

Набор инструментов Qt реализован фирмой Trolltech на следующих платформах:

  • Qt/X11 — Qt для X Window System
  • Qt/Mac — Qt для Apple Mac OS X
  • Qt/Windows — Qt для Microsoft Windows
  • Qt/Embedded — Qt для встраиваемых платформ (PDA, Smartphone, ...)

Существует четыре редакции Qt доступные для каждой из перечисленных платформ:

  • Qt Console — редакция для non-GUI для разработки приложений без графического интерфейса.
  • Qt Desktop Light — редакция для начального уровня GUI, из которой исключены разработка сетевых приложений и работа с базами данных.
  • Qt Desktop — полная редакция.
  • Qt Open Source Edition — полная редакция, для разработки программ с открытым исходным кодом.

Первые три редакции являются проприретарными, и реализованы под коммерческой лицензией; в тоже время Open Source редакция доступна под GPL лицензией и дополнительно под Q Public License (QPL) для Qt/X11 версий.

В случае использования Qt для платформы X11, QPL позволяет выпускать конечное приложение под любой лицензией open source, такой как LGPL или Artistic License. Для платформ Windows и MacOs X, разработка конечного приложения в рамках лицензии GPL доступна только как приложение Open Source и должно полностью удовлетворять GPL.

Все редакции поддерживаются большим количеством компиляторов, куда входит и GCC C++ компилятор, а в случае с Qt/Windows и решение Visual Studio [1].

На ряду с KDE ведется проект портированный с версии Open source Qt/X11 на Qt для Windows. Проект начался как Qt3, предоставляющий версию Qt для Windows, для разработки свободных программ :

  • Qt/Windows Free Edition — бесплатная версия Qt выпущенная KDE на проекте Cygwin. Эта версия основана полностью на исходном коде Qt/X11 под лицензией GPL.

Выпуск Qt4 под лицензией GPL для платформ Unix, MacOS и Windows делает проект менее важным.

Текущее состояние

Последнюю мажорную версию Qt компания Trolltech аннонсировала 28 июня 2005 года под номером 4, в Qt4 было добавленно несколько новых технологий:

  • Tulip — система контейнеров призванная заменить устаревшую систему контейнеров Qt 3.x.
  • Interview — Interview Framework представляет собой вариант реализации парадигмы «модель-контроллер-вид».
  • Arthur — графическая система для Qt4.
  • Scribe — система вывода форматированного текста для Qt4.
  • MainWindow — главное окно Qt-приложений. В отличии от Qt 3.x, тулбары, меню и другие виджеты реализованы независимо друг от друга.

Qt4 распространяется под тремя лицензиями — LGPL, GPL — для создания свободных приложений и проприетарной лицензией для создания коммерческих приложений. Такая политика лицензирования распространяется на все платформы, в то время как Qt 3.x для Windows распространяется только под проприетарной лицензией.

Последняя минорная версия Qt - 4.7.3 была анонсированна 4 мая 2011 года.

История

Хаавард Норд (Haavard Nord) и Эйрик Чамб-Энг (Eirik Chambe-Eng) (первоначальные разработчики Qt и исполнительный директор и президент компании Trolltech соответственно) начали разработку "Qt" в 1991 году, за три года до регистрации компании под названием Quasar Technologies.

Пакет программ был назван Qt, поскольку буква Q красиво смотрелась в шрифте Хааварда Emacs, а T была навеяна Xt, инструментарием X.

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

Это привело к появлению инструментария Harmony, стремившегося дублировать Qt под свободной лицензией, и рабочего стола GNOME, который должен был полностью вытеснить KDE. GNOME использует инструментарий GTK+, написанный для GIMP, и главным образом - язык программирования C.

Вплоть до версии 1.45 Qt использовал лицензию FreeQT и не был ни открытым, ни свободным ПО, поскольку в то время как был доступен исходный код, не позволялось перераспределять модифицированные версии. С выпуском версии 2.0 лицензия сменилась на Q Public License (QPL), лицензию свободного ПО, но Фонд Свободного Программного Обеспечения (Free Software Foundation) сделал вывод о несовместимости с лицензией GPL. Между KDE и Trolltech был достигнут компромисс, по условию которого Qt не мог попасть под лицензии строже QPL, даже если Trolltech будет выкуплена или обанкротится. Это привело к созданию KDE Free Qt Foundation, гарантирующей, что в течение 12 месяцев с момента попадания Qt под лицензию BSD не будет выпущено ни одной открытой версии Qt.

Первые версии Qt были только двух видов: Qt/X11 для Unix и Qt/Windows для платформы Windows. Платформа Windows была доступна исключительно под коммерческой лицензией. В конце 2001 года Trolltech выпустила Qt 3.0, в которую была добавлена поддержка Mac OS X под лицензией GPL. Затем пришел июнь 2005 года, когда платформу Windows добавили в открытое издание. Таким образом, Qt4 в коммерческом издании поддерживает тот же набор платформ, что и в открытом.

Дизайн

Инновации Qt изначально были разделены на несколько ключевых понятий.

Полная абстракия GUI

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

Другие портативные графические инструментарии склонились в сторону wxWidgets, MFC (только Windows) и основанной на Java SWT, которая использует инструментарий целевой платформы.

Мета-объектный Компилятор

Известный как "moc", этот инструментарий должен быть запущен на исходном коде Qt-программы перед ее компиляцией. Он сгенерирует "мета-информацию" о классах, использованных в программе. Эта информация используется Qt для обеспечения возможностей программирования, недоступных в C++: самоанализа и системы сигналов/слотов.

Использование дополнительного инструмента было раскритиковано частью сообщества C++, заявившей, что Qt-программирование представляет собой "издевательство" над C++. В частности, выбор реализации на основе макросов подвергся критике за отсутствие безопасности типа и замусоривание пространства имен. Trolltech рассматривает это как необходимый компромисс ради обеспечения самоанализа и динамически генерируемых слотов или сигналов. Позже, когда вышел Qt 1.x, на согласование между реализациями шаблонов компилятра полагаться было нельзя.

Смотрите также

Внешние ссылки