Qt

У этого термина существуют и другие значения, см. QT.
Qt
Qt logo 2016.svg
Скриншот редактирования простого интерфейса в Qt Creator 3.1.1
Скриншот редактирования простого интерфейса в Qt Creator 3.1.1
Тип библиотека виджетов[d]
Автор Haavard Nord[d][3] и Eirik Chambe-Eng[d][3]
Разработчик Qt Project[d][1] и Qt Development Frameworks
Написана на C++[4]
Операционная система GNU/Linux[d][5], Microsoft Windows[5], macOS[5], BSD[d][5], Android[5] и iOS[5]
Первый выпуск 1995
Последняя версия
Тестовая версия
Лицензия LGPL-3.0[d][5][7], GNU GPL 2[5] и GNU GPL 3[5]
Сайт qt.io​ (англ.)
Commons-logo.svg Медиафайлы на Викискладе

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

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


Функции и состав[ | ]

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

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

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

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

Некоторое время библиотека также распространялась ещё в версии Qt/Embedded, предназначенной для применения на встраиваемых и мобильных устройствах, но начиная с середины 2000-х годов она выделена в самостоятельный продукт Qtopia.

Начиная с версии 4.5 Qt распространяется по трём лицензиям:

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

Исходный , единый для всех вариантов лицензий, свободно доступен в Git-хранилище, расположенном на Github. Кроме самого исходного а 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.

Поддерживаемые платформы[ | ]

Qt работает на большом количестве разных платформ; следующие поддерживаются официально:

Платформа Описание
Linux/Unix
X11 Qt для оконного менеджера X (Linux, FreeBSD, HP-UX, Solaris, AIX, и т. д.).[14]
Wayland Qt для Wayland.[15] Приложения на Qt могут переключаться между графическими бэкэндами вроде X и Wayland во время загрузки, если добавить опцию командной строки -platform.[16][17] Это позволяет приложениям незаметно переходить с X11 на Wayland.
Встраиваемые Linux-системы Qt для встраиваемых систем: КПК, смартфонов, и т. д.[18] Существует в виде нескольких платформ, в зависимости от технологии отрисовки. DirectFB, LinuxFB и EGLFS (EGL Full Screen).
Android Qt для Android[19], ранее известный как Necessitas.[20]
Платформы Apple
OS X Qt для Apple OS X; поддерживает приложения на Cocoa.[21]
iOS Qt для iOS платформ (iPhone, iPad).[22]
Платформы Microsoft
Windows Qt для Microsoft Windows XP, Vista, 7,[23] 8 и 10.[24]
Windows CE Qt для Windows CE 6 и Windows Embedded Compact 7.[25]
Windows RT Поддержка для основанных на WinRT приложениях для Windows 8 и Windows Phone 8[26]. Начиная с версии 5.4: Windows Phone 8.1.[27]
Другие встраиваемые платформы
Integrity Qt для Integrity.[28]
QNX Qt для QNX.[29]
VxWorks Qt для VxWorks.[30]

После того, как Nokia открыла исходный Qt сообществу на Gitorious[en], появились различные порты. Также есть некоторые порты, которые могут быть доступны, но более не поддерживаются.

Компоненты[ | ]

Библиотека разделена на ряд модулей:

  • QtCore — классы ядра библиотеки, используемые другими модулями;
  • QtGui — компоненты графического интерфейса;
  • QtWidgets — содержит классы для классических приложений на основе виджетов, модуль выделен из QtGui в Qt 5;
  • Qt QML — модуль для поддержки QML;
  • 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 — классы создания расширений для своих собственных виджетов;
  • QtUiTools — классы для обработки в приложении форм Qt Designer;
  • QtAssistant — справочная система;
  • Qt3Support — модуль с классами, необходимыми для совместимости с библиотекой Qt версии 3.х.х;
  • QtTest — классы для поддержки модульного тестирования;
  • QtWebKit — модуль WebKit, интегрированный в Qt и доступный через её классы. (Начиная с Qt 5.6 признан устаревшим);
  • QtWebEngine — модуль Chromium, интегрированный в Qt и доступный через её классы.
  • QtXmlPatterns — модуль для поддержки XQuery 1.0 и XPath 2.0;
  • Phonon — модуль для поддержки воспроизведения и записи видео и аудио, как локально, так и с устройств и по сети (Начиная с Qt 5 заменён на QtMultimedia);
  • QtMultimedia — модуль для поддержки воспроизведения и записи видео и аудио, как локально, так и с устройств и по сети;
  • 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 перестала поддерживаться с 2010 года.

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

Документация[ | ]

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

Использование[ | ]

Qt используется в Autodesk Maya,[33][34], Skype, Telegram, Медиапроигрыватель VLC,[35] VirtualBox, и Mathematica,[36] и на European Space Agency,[37] DreamWorks,[38][39] Google, HP,[40] Lucasfilm,[41] Panasonic,[42] Philips,[43] Samsung,[44] Siemens,[45] Volvo[46] и Walt Disney Animation Studios, ЦАО[47], Google Планета Земля, медиаплеер CherryPlayer.

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

Метаобъектная система[ | ]

Метаобъектная система — часть ядра фреймворка для поддержки в С++ таких возможностей, как сигналы и слоты для коммуникации между объектами в режиме реального времени и динамических свойств системы.

Метаобъектная система содержит: класс QObject, макрос Q_OBJECT и утилиту moc (метаобъектный компилятор). QObject — это базовый класс для всех Qt-классов. Макрос Q_OBJECT используется для включения метаобъектных функций в классах и на этапе компиляции работает как препроцессор, который преобразует применения макроса в исходный C++.

Примечания[ | ]

  1. https://qt-project.org/
  2. Turunen T. Qt 5.15.2 Released (англ.) — 2020.
  3. 1 2 https://my.safaribooksonline.com/0131872494/pref04
  4. The qt Open Source Project on Open Hub: Languages Page — 2006.
  5. 1 2 3 4 5 6 7 8 9 Free Software Directory
  6. Qt 6.0.1 Released
  7. http://trolltech.com/company/newsroom/announcements/press.2008-01-18.1601592972
  8. Interview with Trolltech’s Eirik Eng and Matthias Ettrich (англ.) (12 April 2004). Дата обращения: 16 декабря 2011. Архивировано 3 февраля 2012 года.
  9. アーカイブされたコピー. Дата обращения: 3 августа 2007. Архивировано 9 августа 2007 года.
  10. http://www.qtsoftware.com/products/qt/jambi/  (недоступная ссылка)
  11. Qt framework for QNX (англ.)
  12. Change I4352629a: Windows RT and Windows Phone preliminary support (англ.)
  13. Qt’s WinRT port and its C++/CX usage Архивировано 29 октября 2013 года. (англ.)
  14. Qt Wiki – Support for Linux/X11. Qt Project (12 August 2011). Дата обращения: 21 августа 2013.
  15. Jørgen Lind. Multi-process Lighthouse. Qt Project (18 March 2011). Дата обращения: 21 августа 2013.
  16. Getting started with Lighthouse. Дата обращения: 25 ноября 2011.
  17. Kristian Høgsberg. Add wayland lighthouse plugin (недоступная ссылка) (25 January 2011). Архивировано 3 февраля 2016 года.
  18. Qt Wiki – Support for Embedded Linux. Qt Project (12 August 2011). Дата обращения: 10 апреля 2015.
  19. New Features in Qt 5.1 - Support for New Platforms. Digia (3 July 2013). Дата обращения: 10 апреля 2015.
  20. Necessitas project (недоступная ссылка). Дата обращения: 10 апреля 2015. Архивировано 20 февраля 2016 года.
  21. Qt Wiki – Support for OS X. Qt Project (14 August 2011). Дата обращения: 21 августа 2013.
  22. Supported Platforms. Дата обращения: 1 февраля 2014.
  23. Qt Wiki – Support for Windows. Qt Project (11 August 2011). Дата обращения: 11 августа 2013.
  24. Windows 10 Support in Qt. Qt Company (29 April 2015). Дата обращения: 28 января 2016.
  25. Bjoern Breitmeyer. The State of WinCE Support in Qt5. KDAB (21 August 2013). Дата обращения: 21 августа 2013.
  26. Qt for WinRT. Qt Project. Дата обращения: 9 сентября 2014.
  27. New Features in Qt 5.4 — Qt Wiki
  28. Qt Product pages, Supported platforms. Qt - Product - Qt Framework. The Qt Company. Дата обращения: 21 ноября 2014.
  29. Qt Blog. Qt Commercial Formally Supports QNX | Qt Blog. Blog.qt.digia.com. Дата обращения: 19 марта 2013. Архивировано 8 октября 2013 года.
  30. Qt Blog. Qt Commercial for VxWorks | Qt Blog. Blog.qt.digia.com. Дата обращения: 19 марта 2013. Архивировано 19 апреля 2014 года.
  31. Jono Bacon. Reviews: Qt (англ.). MacTech (2004). Дата обращения: 16 сентября 2010. Архивировано 23 августа 2011 года.
  32. Online Reference Documentation (англ.). Nokia. Дата обращения: 16 сентября 2010. Архивировано 23 августа 2011 года.
  33. Qt in Autodesk. Архивировано 3 февраля 2012 года.
  34. Qt in visual effects. Архивировано 3 февраля 2012 года.
  35. Qt in VideoLan Player. Архивировано 3 февраля 2012 года.
  36. Qt delivered advanced, cross-platform C++ GUI for Mathematica’s development team. Архивировано 3 февраля 2012 года.
  37. Qt in the European Space Agency. Архивировано 3 февраля 2012 года.
  38. Behind the Scenes at DreamWorks Animation: Making the Apps that Make the Movies. Архивировано 3 февраля 2012 года.
  39. UI & System Design Challenges for the NxG Lighting Tool. Архивировано 3 февраля 2012 года.
  40. Developing Innovative Desktop and Embedded HP Products with Qt. Архивировано 3 февраля 2012 года.
  41. Lucasfilm Entertainment Company Ltd.. Архивировано 3 февраля 2012 года.
  42. Panasonic selects Qt for HD video system. Архивировано 3 февраля 2012 года.
  43. Qt in IP Communications. Архивировано 3 февраля 2012 года.
  44. Qt in Home Media. Архивировано 3 февраля 2012 года.
  45. Qt helped Siemens deliver a C++ development platform for manufacturing software GUIs. Архивировано 3 февраля 2012 года.
  46. Volvo Mobility Systems. Архивировано 3 февраля 2012 года.
  47. Qt helped Walt Disney reduce development time spent on its cross-platform feature film production application. Архивировано 3 февраля 2012 года.

Литература[ | ]

  • Макс Шлее. Qt 5.3 Профессиональное программирование на C++. — СПб.: БХВ-Петербург, 2015. — 928 с. — ISBN 978-5-9775-3346-1.
  • Боровский А. 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.

Ссылки[ | ]