Qt

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Qt
Qt-logo.png
Screenshot-qt-designer-qwebview.png
Программа Qt Designer
Тип

Кроссплатформенный фреймворк, содержащий элементы пользовательского интерфейса (виджеты), шаблоны контейнеров, средства работы с мультимедиа и т. п.

Автор

Haavard Nord,
Eirik Chambe-Eng[1]

Разработчики

Qt Project[2], Digia[3]

Написана на

C++, QML, CSS, JavaScript

Операционная система

Linux, Mac OS X, Android и др. UNIX-подобные, Windows

Первый выпуск

1995-05-20

Последняя версия

5.3.1[4] (26 июня 2014)

Лицензия

GNU LGPL или GNU GPL[5], коммерческая[6]

Сайт

qt-project.org

Qt на Викискладе

Qt (произносится /ˈkjuːt/ (кьют) как «cute»[7] или неофициально Q-T (кью-ти)) — кроссплатформенный инструментарий разработки ПО на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python — PyQt, PySide; Ruby — QtRuby[8]; Java — Qt Jambi[9]; PHP — PHP-Qt и другие.

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

Существуют версии библиотеки для Microsoft Windows, систем класса UNIX с графической подсистемой X11, Android, iOS, Mac OS X, Microsoft Windows CE, QNX[10], встраиваемых Linux-систем и платформы S60. Идет портирование на Windows Phone и Windows RT[11][12]. Также идёт портирование на Haiku и Tizen.

До недавнего времени библиотека Qt также распространялась ещё в одной версии: Qt/Embedded. Теперь эта платформа переименована в Qtopia Core и распространяется как отдельный продукт. Qtopia Core обеспечивает базовую функциональность для всей линейки платформ, предназначенных для разработки приложений для встраиваемых и мобильных устройств (КПК, смартфонов и т. п.).

Начиная с версии 4.5 Qt распространяется по 3 лицензиям (независимо от лицензии, исходный код Qt один и тот же):

  • Qt Commercial — для разработки ПО с собственнической лицензией, допускающая модификацию самой Qt без раскрытия изменений;
  • GNU GPL — для разработки ПО с открытыми исходниками, распространяемыми на условиях GNU GPL;
  • GNU LGPL — для разработки ПО с собственнической лицензией, но без внесения изменений в Qt.

До версии 4.0.0 под свободной лицензией распространялись лишь Qt/Mac, Qt/X11, Qt/Embedded, но, начиная с 4.0.0 (выпущенной в конце июня 2005), Qt Software «освободили» и Qt/Windows. Следует отметить, что существовали сторонние свободные версии Qt/Windows < 4.0.0, сделанные на основе Qt/X11.

Со времени своего появления в 1996 году библиотека Qt легла в основу тысяч успешных проектов[13] во всём мире. Кроме того, Qt является фундаментом популярной рабочей среды KDE, входящей в состав многих дистрибутивов Linux.

Отличительная особенность Qt от других библиотек — использование Meta Object Compiler (MOC) — предварительной системы обработки исходного кода (в общем-то, Qt — это библиотека не для чистого C++, а для его особого наречия, с которого и «переводит» MOC для последующей компиляции любым стандартным C++ компилятором). MOC позволяет во много раз увеличить мощь библиотек, вводя такие понятия, как слоты и сигналы. Кроме того, это позволяет сделать код более лаконичным. Утилита MOC ищет в заголовочных файлах на C++ описания классов, содержащие макрос Q_OBJECT, и создаёт дополнительный исходный файл на C++, содержащий метаобъектный код.

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

Qt комплектуется визуальной средой разработки графического интерфейса «Qt Designer», позволяющей создавать диалоги и формы в режиме WYSIWYG. В поставке Qt есть «Qt Linguist» — графическая утилита, позволяющая упростить локализацию и перевод программы на многие языки; и «Qt Assistant» — справочная система Qt, упрощающая работу с документацией по библиотеке, а также позволяющая создавать кросс-платформенную справку для разрабатываемого на основе Qt ПО. Начиная с версии 4.5.0 в комплект Qt включена среда разработки «Qt Creator», которая включает в себя редактор кода, справку, графические средства «Qt Designer» и возможность отладки приложений. «Qt Creator» может использовать GCC или Microsoft VC++ в качестве компилятора и GDB в качестве отладчика. Для Windows версий библиотека комплектуется компилятором, заголовочными и объектными файлами MinGW.

Компоненты[править | править вики-текст]

Библиотека разделена на несколько модулей, для четвёртой версии библиотеки это:

  • QtCore — классы ядра библиотеки, используемые другими модулями;
  • QtGui — компоненты графического интерфейса;
  • QtNetwork — набор классов для сетевого программирования. Поддержка различных высокоуровневых протоколов может меняться от версии к версии. В версии 4.2.x присутствуют классы для работы с протоколами FTP и HTTP. Для работы с протоколами TCP/IP предназначены такие классы, как QTcpServer, QTcpSocket для TCP и QUdpSocket для UDP;
  • QtOpenGL — набор классов для работы с OpenGL;
  • QtSql — набор классов для работы с базами данных с использованием языка структурированных запросов SQL. Основные классы данного модуля в версии 4.2.х: QSqlDatabase — класс для предоставления соединения с базой, для работы с какой-нибудь конкретной базой данных требует объект, унаследованный от класса QSqlDriver — абстрактного класса, который реализуется для конкретной базы данных и может требовать для компиляции SDK базы данных. Например, для сборки драйвера под базу данных Firebird/InterBase требует .h файлы и библиотеки статической линковки, входящие в комплект поставки данной БД;
  • QtScript — классы для работы с Qt Scripts;
  • QtSvg — классы для отображения и работы с данными Scalable Vector Graphics (SVG);
  • QtXml — модуль для работы с XML, поддерживается SAX и DOM модели работы;
  • QtDesigner — классы создания расширений QtDesigner’а для своих собственных виджетов;
  • QtUiTools — классы для обработки в приложении форм Qt Designer;
  • QtAssistant — справочная система;
  • Qt3Support — модуль с классами, необходимыми для совместимости с библиотекой Qt версии 3.х.х;
  • QtTest — модуль для работы с UNIT тестами;
  • QtWebKit — модуль WebKit, интегрированный в Qt и доступный через её классы;
  • QtXmlPatterns — модуль для поддержки XQuery 1.0 и XPath 2.0;
  • Phonon — модуль для поддержки воспроизведения и записи видео и аудио, как локально, так и с устройств и по сети;
  • QtCLucene — модуль для поддержки полнотекстового поиска, применяется в новой версии Assistant в Qt 4.4;
  • ActiveQt — модуль для работы с ActiveX и COM технологиями для Qt-разработчиков под Windows.
  • QtDeclarative — модуль, предоставляющий декларативный фреймворк для создания динамичных, настраиваемых пользовательских интерфейсов.

Также реализована технология WoC — widgets on canvas, с помощью которой реализована Plasma в KDE 4.1, Будет возможным использовать виджеты библиотеки Qt прямо в аплетах. Обеспечивает расположение виджетов на QGraphicsView с возможностью масштабирования и различных графических эффектов.

Библиотека использует собственный формат проекта, именуемый .pro файлом, в котором собрана информация о том, какие файлы будут скомпилированы, по каким путям искать заголовочные файлы и много другой информации. Впоследствии при помощи утилиты qmake из них получаются makefile для make-утилиты компилятора. Также есть возможность работы при помощи интеграторов с Microsoft Visual Studio 2003/2005/2008/2010. Совсем недавно стала доступна интеграция в Eclipse для версии библиотеки 4.х.х.

Разработчики на Java могут использовать Qt с помощью фреймворка Qt Jambi от того же производителя (официально с 2009 года Qt Software прекратила разработку этого фреймворка).

Документация[править | править вики-текст]

Одним из весомых преимуществ проекта Qt является наличие качественной документации[14][15], в отличие, например, от wxWidgets. Статьи документации снабжены большим количеством примеров. Исходный код самой библиотеки хорошо форматирован, подробно комментирован и легко читается, что также упрощает изучение Qt.

Исходный код[править | править вики-текст]

Исходный код, единый для всех вариантов лицензий, свободно доступен в Git-хранилище, расположенном на Gitorious-е по адресу — qt.gitorious.org/qt. Кроме самого исходного кода Qt, на Gitorious-е расположены хранилища сопутствующих библиотек, разрабатываемых авторами библиотеки и сообществом. Корневой адрес связанных с Qt официальных проектов — qt.gitorious.org. Для внесения собственного вклада в развитие Qt, можно склонировать официальное хранилище, внести необходимые исправления/улучшения в код, а затем подать запрос на объединение (Merge Request) ваших изменений с официальным кодом.

Подробная инструкция по участию находится здесь.

Использование[править | править вики-текст]

Qt используется в Autodesk Maya,[16][17], Adobe Photoshop Elements, OPIE, Skype, Медиапроигрыватель VLC,[18] VirtualBox, и Mathematica,[19] и на European Space Agency,[20] DreamWorks,[21][22] Google, HP,[23] KDE, Lucasfilm,[24] Panasonic,[25] Philips,[26] Samsung,[27] Siemens,[28] Volvo[29] и Walt Disney Animation Studios, ЦАО[30].

Кроме того, на Qt основана среда рабочего стола KDE, графический интерфейс мобильной ОС MeeGo и Qt Creator — среда разработки на Qt;

См. также Категория:Приложения, использующие Qt

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Краткая история Qt = A Brief History of Qt.
  2. Официальный сайт организации Qt Project. Qt Project. Архивировано из первоисточника 9 марта 2013.
  3. О подразделении Qt Commercial
  4. Блог проекта Qt
  5. Лицензия Qt (англ.)
  6. Почему выбирают коммерческую лицензию Qt?
  7. Interview with Trolltech’s Eirik Eng and Matthias Ettrich (англ.) (12 April 2004). Проверено 16 декабря 2011. Архивировано из первоисточника 3 февраля 2012.
  8. http://developer.kde.org/language-bindings/ruby/index.html (недоступная ссылка — историякопия)
  9. http://www.qtsoftware.com/products/qt/jambi/ (недоступная ссылка)
  10. Qt framework for QNX (англ.)
  11. Change I4352629a: Windows RT and Windows Phone preliminary support (англ.)
  12. Qt’s WinRT port and its C++/CX usage (англ.)
  13. Free Qt Applications (англ.) — База открытых приложений, использующих Qt
  14. Jono Bacon. Reviews: Qt (англ.). MacTech (2004). Проверено 16 сентября 2010. Архивировано из первоисточника 23 августа 2011.
  15. Online Reference Documentation (англ.). Nokia. Проверено 16 сентября 2010. Архивировано из первоисточника 23 августа 2011.
  16. Qt in Autodesk. Архивировано из первоисточника 3 февраля 2012.
  17. Qt in visual effects. Архивировано из первоисточника 3 февраля 2012.
  18. Qt in VideoLan Player. Архивировано из первоисточника 3 февраля 2012.
  19. Qt delivered advanced, cross-platform C++ GUI for Mathematica’s development team. Архивировано из первоисточника 3 февраля 2012.
  20. Qt in the European Space Agency. Архивировано из первоисточника 3 февраля 2012.
  21. Behind the Scenes at DreamWorks Animation: Making the Apps that Make the Movies. Архивировано из первоисточника 3 февраля 2012.
  22. UI & System Design Challenges for the NxG Lighting Tool. Архивировано из первоисточника 3 февраля 2012.
  23. Developing Innovative Desktop and Embedded HP Products with Qt. Архивировано из первоисточника 3 февраля 2012.
  24. Lucasfilm Entertainment Company Ltd.. Архивировано из первоисточника 3 февраля 2012.
  25. Panasonic selects Qt for HD video system. Архивировано из первоисточника 3 февраля 2012.
  26. Qt in IP Communications. Архивировано из первоисточника 3 февраля 2012.
  27. Qt in Home Media. Архивировано из первоисточника 3 февраля 2012.
  28. Qt helped Siemens deliver a C++ development platform for manufacturing software GUIs. Архивировано из первоисточника 3 февраля 2012.
  29. Volvo Mobility Systems. Архивировано из первоисточника 3 февраля 2012.
  30. Qt helped Walt Disney reduce development time spent on its cross-platform feature film production application. Архивировано из первоисточника 3 февраля 2012.
  31. qtHaskell
  32. Qt-Forth — учебный forth с графикой Qt для Windows и Linux
  33. Подключение графической библиотеки QT к SPF 4.20

Литература[править | править вики-текст]

  • Боровский А. Qt 4.7+ Практическое программирование на C++. — СПб.: «БХВ-Петербург», 2012. — С. 496. — ISBN 978-5-9775-0757-8
  • Макс Шлее Qt 4.8 Профессиональное программирование на C++. — СПб.: «БХВ-Петербург», 2012. — С. 912. — ISBN 978-5-9775-0736-3
  • Саммерфилд М. Qt. Профессиональное программирование. Разработка кроссплатформенных приложений на С++. — СПб.: «Символ-Плюс», 2011. — С. 560. — ISBN 978-5-93286-207-0
  • Макс Шлее Qt 4.5 Профессиональное программирование на C++. — СПб.: «БХВ-Петербург», 2010. — С. 896. — ISBN 978-5-9775-0398-3
  • Ж. Бланшет, М. Саммерфилд Qt 4: Программирование GUI на C++. 2-е дополненное издание. — М.: «КУДИЦ-ПРЕСС», 2008. — С. 736. — ISBN 978-5-91136-059-7
  • Земсков Ю.В. Qt 4 на примерах. — СПб.: «БХВ-Петербург», 2008. — С. 608. — ISBN 978-5-9775-0256-6
  • Макс Шлее Qt 4: Профессиональное программирование на C++. — СПб.: «БХВ-Петербург», 2007. — С. 880. — ISBN 978-5-9775-0010-6
  • Чеботарев А. Библиотека Qt 4. Создание прикладных приложений в среде Linux. — М.: «Диалектика», 2006. — С. 256. — ISBN 5-8459-0996-1

Ссылки[править | править вики-текст]