Qt

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Qt
Логотип программы Qt
Скриншот программы Qt
Снимок интегрированной среды разработки Qt Creator версии 6.0.2
Тип фреймворк
Разработчики

Trolltech (1991–2008)

Nokia (2008–2011)

Qt Project (2011–?)

Digia (2012–2014)

The Qt Company (2014 — настоящее время)
Написана на C++[3]
Операционные системы GNU/Linux[4], Windows[4], macOS[4], BSD[d][4], Android[4] и iOS[4]
Первый выпуск 20 мая 1995
Последняя версия
Бета-версия
Репозиторий code.qt.io/cgit/qt/qtbas…
Лицензия LGPL-3.0[d][4][5], GNU GPL 2[4] и GNU GPL 3[4]
Сайт qt.io (англ.)
Логотип Викисклада Медиафайлы на Викискладе

Qt (МФА [ˈkjuːt], произносится «кьют» как «cute»[6]) или неофициально Q-T («кью-ти», «ку-тэ», «кью-тэ») — фреймворк для разработки кроссплатформенного программного обеспечения на языке программирования C++. Для многих языков программирования существуют библиотеки, позволяющие использовать преимущества Qt: Python — PyQt, PySide; Ruby — QtRuby[7]; Java — QtJambi[8]; PHP — PHP-Qt и другие.

Со времени своего появления в 1996 году библиотека легла в основу многих программных проектов. Кроме того, Qt является фундаментом популярной рабочей среды KDE Plasma, входящей в состав многих дистрибутивов 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, macOS, Microsoft Windows CE, QNX[9], встраиваемых Linux-систем и платформы S60. Идет портирование на Windows Phone и Windows RT[10][11]. Также идёт портирование на 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, и т. д.).[12]
Wayland Qt для Wayland.[13] Приложения на Qt могут переключаться между графическими бэкэндами вроде X и Wayland во время загрузки, если добавить опцию командной строки -platform.[14][15] Это позволяет приложениям незаметно переходить с X11 на Wayland.
Встраиваемые Linux-системы Qt для встраиваемых систем: КПК, смартфонов, и т. д.[16] Существует в виде нескольких платформ, в зависимости от технологии отрисовки. DirectFB, LinuxFB и EGLFS (EGL Full Screen).
Android Qt для Android[17], ранее известный как Necessitas.[18]
Платформы Apple
OS X Qt для Apple OS X; поддерживает приложения на Cocoa.[19]
iOS Qt для iOS платформ (iPhone, iPad).[20]
Платформы Microsoft
Windows Qt для Microsoft Windows XP, Vista, 7,[21] 8 и 10.[22]
Windows CE Qt для Windows CE 6 и Windows Embedded Compact 7.[23]
Windows RT Поддержка для основанных на WinRT приложениях для Windows 8 и Windows Phone 8[24]. Начиная с версии 5.4: Windows Phone 8.1.[25]
Другие встраиваемые платформы
Integrity Qt для Integrity.[26]
QNX Qt для QNX.[27]
VxWorks Qt для VxWorks.[28]

После того, как 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 и доступный через её классы. В QT 6.3.0 версия chromium — 94.0[29]
  • 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 — подробная документация[30][31], сопровождающаяся большим количеством примеров. Исходный код примеров содержит подробные комментарии и описание, что также упрощает изучение Qt.

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

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

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

Метаобъектная система[править | править код]

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

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

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

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

Ссылки[править | править код]