Введение
компания, ранее известная как Qt Software. Объектно-ориентированный фреймворк для разработки программного обеспечения.
Object oriented framework for software development
Qt (pronounced "cute" or as an initialism) is cross platform application development framework for creating graphical user interfaces as well as cross platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed. Qt is currently being developed by The Qt Company, a publicly listed company, and the Qt Project under open source governance, involving individual developers and organizations working to advance Qt. Qt is available under both commercial licenses
Qt supports various C++ compilers, including the GCC and Clang C++ compilers and the Visual Studio suite. It supports other languages with bindings or extensions, such as Python via Python bindings and PHP via an extension for PHP5, and has extensive internationalization support. Qt also provides Qt Quick, that includes a declarative scripting language called QML that allows using JavaScript to provide the logic. With Qt Quick, rapid application development for mobile devices became possible, while logic can still be written with native code as well to achieve the best possible performance. Other features include SQL database access, XML parsing, JSON parsing, thread management and network support.
Qt (произносится как "кьют" или как акроним) – это кроссплатформенный фреймворк для разработки приложений, предназначенный для создания графических пользовательских интерфейсов, а также кроссплатформенных приложений, работающих на различных программных и аппаратных платформах, таких как Linux, Windows, macOS, Android или встраиваемые системы, с минимальными или отсутствующими изменениями в базовом коде, при этом оставаясь нативными приложениями с нативными возможностями и производительностью. В настоящее время Qt разрабатывается компанией The Qt Company, публичной компанией, и проектом Qt под управлением с открытым исходным кодом, в котором участвуют отдельные разработчики и организации, работающие над развитием Qt. Qt доступен как по коммерческим лицензиям.
Object oriented framework for software development
Qt (pronounced "cute" or as an initialism) is cross platform application development framework for creating graphical user interfaces as well as cross platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed. Qt is currently being developed by The Qt Company, a publicly listed company, and the Qt Project under open source governance, involving individual developers and organizations working to advance Qt. Qt is available under both commercial licenses
Qt supports various C++ compilers, including the GCC and Clang C++ compilers and the Visual Studio suite. It supports other languages with bindings or extensions, such as Python via Python bindings and PHP via an extension for PHP5, and has extensive internationalization support. Qt also provides Qt Quick, that includes a declarative scripting language called QML that allows using JavaScript to provide the logic. With Qt Quick, rapid application development for mobile devices became possible, while logic can still be written with native code as well to achieve the best possible performance. Other features include SQL database access, XML parsing, JSON parsing, thread management and network support.
Qt поддерживает различные компиляторы C++, включая GCC, Clang и Visual Studio. Он также поддерживает другие языки программирования через привязки или расширения, такие как Python с помощью Python bindings и PHP через расширение для PHP5, и обладает широкими возможностями интернационализации. Qt также предоставляет Qt Quick, включающий декларативный язык сценариев QML, позволяющий использовать JavaScript для реализации логики. Благодаря Qt Quick стала возможной быстрая разработка приложений для мобильных устройств, при этом логика по-прежнему может быть написана на нативном коде для достижения максимальной производительности. Другие возможности включают доступ к базам данных SQL, разбор XML и JSON, управление потоками и сетевую поддержку.
Object oriented framework for software development
Qt (pronounced "cute" or as an initialism) is cross platform application development framework for creating graphical user interfaces as well as cross platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed. Qt is currently being developed by The Qt Company, a publicly listed company, and the Qt Project under open source governance, involving individual developers and organizations working to advance Qt. Qt is available under both commercial licenses
Qt supports various C++ compilers, including the GCC and Clang C++ compilers and the Visual Studio suite. It supports other languages with bindings or extensions, such as Python via Python bindings and PHP via an extension for PHP5, and has extensive internationalization support. Qt also provides Qt Quick, that includes a declarative scripting language called QML that allows using JavaScript to provide the logic. With Qt Quick, rapid application development for mobile devices became possible, while logic can still be written with native code as well to achieve the best possible performance. Other features include SQL database access, XML parsing, JSON parsing, thread management and network support.
Релизы
Последняя версия Qt Framework — Qt 6.7, которая была выпущена 2 апреля 2024 года. Также поддерживаются версии 6.5 LTS, выпущенная 3 апреля 2023 года, 6.2 LTS, выпущенная 30 сентября 2021 года, и 5.15 LTS, выпущенная 26 мая 2020 года – для коммерческих пользователей. Версии с долгосрочной поддержкой (LTS) обычно поддерживаются в течение трех лет при наличии коммерческой лицензии, в то время как поддержка версии 5.15 была продлена до пяти лет для подписчиков, и поэтому она поддерживается до 26 мая 2025 года. Помимо этого, проект KDE предоставляет неофициальную поддержку, как минимум, версии Qt 5.15, то есть не только для коммерческих пользователей.
Qt в использовании
В 2017 году компания Qt оценила численность сообщества разработчиков примерно в 1 миллион человек по всему миру, работающих в более чем 70 отраслях.
Модули Qt
Начиная с Qt 4.0, фреймворк был разделен на отдельные модули. С Qt 5.0 архитектура стала еще более модульной. Qt теперь разделен на основные и расширяющие модули.
Основные
МодульОписание Qt CoreЕдинственный необходимый модуль Qt, содержащий классы, используемые другими модулями, включая метаобъектную систему, поддержку параллельности и многопоточности, контейнеры, систему событий, плагины и средства ввода-вывода. Qt GUIЦентральный модуль графического интерфейса. В Qt 5 этот модуль теперь зависит от OpenGL, но больше не содержит классов виджетов. Qt WidgetsСодержит классы для классических GUI-приложений на основе виджетов и классы QSceneGraph. Был выделен из QtGui в Qt 5. Qt QMLМодуль для языков QML и JavaScript. Qt QuickМодуль для GUI-приложений, написанных с использованием QML2. Qt Quick ControlsВиджеты, подобные элементам управления, для Qt Quick, предназначенные главным образом для настольных приложений. Qt Quick LayoutsМакеты для расположения элементов в Qt Quick. Qt NetworkСетевой уровень абстракции. Обеспечивает полную поддержку TCP, UDP, HTTP, TLS, SSL (в Qt 4) и SPDY (с Qt 5.3). Qt MultimediaКлассы для работы с аудио, видео, радио и камерой. Qt Multimedia WidgetsВиджеты из Qt Multimedia. Qt SQLСодержит классы для интеграции с базами данных с использованием SQL. Qt WebEngineНовый набор API для webview на основе Qt Widget и QML, использующий Chromium. Qt TestКлассы для модульного тестирования приложений и библиотек Qt.
Дополнительные
МодульDescriptionActive QtКлассы для приложений, использующих ActiveX. Qt ChartsПредоставляет функциональность и виджеты для построения графиков различных типов. Qt BluetoothКлассы для доступа к аппаратному обеспечению Bluetooth. Qt D BusКлассы для межпроцессного взаимодействия (IPC) с использованием протокола D Bus. Qt NFCКлассы для доступа к аппаратному обеспечению NFC. Пока официально поддерживается только на аппаратном обеспечении BlackBerry (или N9 в порте MeeGo). Qt OpenGLУстаревший модуль, содержащий классы OpenGL из Qt 4. В Qt 5 рекомендуется использовать аналогичную функциональность в Qt GUI. Qt LocationКлассы для доступа к GPS и другим службам определения местоположения, а также для картографии и навигации. Выделен из модуля Qt 4 Mobility. Поддерживается на Android, BlackBerry, iOS, Linux (с использованием GeoClue), Windows и Sailfish OS. Qt Quick 3DКлассы для рендеринга 3D-моделей, видеоигр, симуляций и 3D-пользовательских интерфейсов с использованием Qt QML API в смешанный 2D и 3D графический движок сцены. Qt ScriptУстаревший модуль для скриптинга приложений Qt с использованием ECMAScript/JavaScript. В Qt 5 рекомендуется использовать аналогичные классы в Qt QML. Qt SensorsКлассы для доступа к различным мобильным аппаратным датчикам. Ранее был частью Qt Mobile в Qt 4. Поддерживается на Android, BlackBerry, iOS, WinRT, Mer и Linux. Qt Serial PortКлассы для доступа к аппаратному и виртуальному последовательному порту. Поддерживается на Windows, Linux и macOS. Qt WebChannelПредоставляет доступ к объектам Qt из HTML/Js через WebSockets. Qt WebKitРеализация и API WebKit от Qt. Qt WebKit WidgetsAPI виджетов для Qt WebKit. Qt WebSocketsПредоставляет реализацию WebSocket. Qt XMLУстаревший модуль, содержащий классы для XML API в стилях SAX и DOM. Заменен классами QXmlStreamReader и QXmlStreamWriter в Qt Core. Qt XML PatternsПоддержка XPath, XQuery, XSLT и проверки схем XML (XML Schema).
Лицензирование
Qt доступен под следующими лицензиями свободного программного обеспечения: GPL 2.0, GPL 3.0, LGPL 3.0 и LGPL 2.1 (с особым исключением для Qt). Обратите внимание, что некоторые модули доступны только под лицензией GPL, что означает, что приложения, использующие эти модули, должны соответствовать требованиям этой лицензии. Помимо этого, Qt всегда был доступен по коммерческой лицензии, например, Коммерческая лицензия Qt, которая позволяет разрабатывать проприетарные приложения без ограничений по лицензированию.
Qt инструменты
Qt поставляется со своим собственным набором инструментов, облегчающих кроссплатформенную разработку, которая в противном случае может быть затруднительной из-за различий в инструментах разработки для разных платформ. Qt Creator — это кроссплатформенная интегрированная среда разработки (IDE) для C++ и QML. Функциональность компоновки и дизайна графического интерфейса Qt Designer интегрирована в IDE, хотя Qt Designer также можно запускать как отдельное приложение. Помимо Qt Creator, Qt предоставляет qmake — кроссплатформенный инструмент для генерации скриптов сборки, который автоматизирует создание файлов Makefile для проектов разработки на различных платформах. В Qt также доступны другие инструменты, включая конструктор интерфейсов Qt Designer и браузер справки Qt Assistant (оба встроены в Qt Creator), инструмент перевода Qt Linguist, uic (компилятор пользовательских интерфейсов) и moc (метакомпилятор объектов).
Ранние события
Летом 1990 года Хаавард Норд и Эрик Чамбе Энг (первоначальные разработчики Qt и, соответственно, генеральный директор и президент компании Trolltech) работали вместе над приложением для работы с базой данных ультразвуковых изображений, написанным на C++ и работающим на Mac OS, Unix и Microsoft Windows. Разработку "Qt" они начали в 1991 году, за три года до того, как компания была зарегистрирована под названием Quasar Technologies, а затем переименована в Troll Tech и, впоследствии, в Trolltech. Первые две версии Qt существовали в двух вариантах: Qt/X11 для Unix и Qt/Windows для Windows. 20 мая 1995 года Trolltech опубликовала Qt 0.90 для X11/Linux с исходным кодом под лицензией Qt Free Edition. Фонд свободного программного обеспечения счел эту лицензию не соответствующей определению свободного программного обеспечения, поскольку, хотя исходный код был доступен, она не разрешала распространение измененных версий. Trolltech использовала эту лицензию вплоть до версии 1.45. Около 1998 года разгорелись споры, когда стало очевидно, что K Desktop Environment станет одной из ведущих графических сред для Linux. Поскольку она была основана на Qt, многие участники движения за свободное программное обеспечение опасались, что важная часть одной из их основных операционных систем окажется проприетарной. Платформа Windows была доступна только по проприетарной лицензии, что означало, что бесплатные приложения с открытым исходным кодом, написанные на Qt для X11, нельзя было портировать в Windows без приобретения проприетарной версии.
Стать свободным программным обеспечением
С выпуском версии 2.0 инструментария в середине 1999 года лицензия была изменена на Q Public License (QPL) – лицензию свободного программного обеспечения, однако Фонд свободного программного обеспечения (FSF) считал её несовместимой с GPL. Между KDE и Trolltech были достигнуты компромиссы, гарантирующие, что Qt не сможет перейти под более ограничительную лицензию, чем QPL, даже в случае поглощения или банкротства Trolltech. Это привело к созданию фонда KDE Free Qt, который гарантировал, что Qt будет распространяться под лицензией в стиле BSD, если в течение 12 месяцев не будет выпущена версия Qt с открытым исходным кодом. В 2000 году Qt/X11 2.2 был выпущен под лицензией GPL v2, что положило конец всем спорам относительно совместимости с GPL. В конце 2001 года Trolltech выпустила Qt 3.0 с поддержкой Mac OS X (ныне известной как macOS). Поддержка Mac OS X была доступна только в проприетарной лицензии до июня 2003 года, когда Trolltech выпустила Qt 3.2 с поддержкой Mac OS X, доступной под GPL. В 2002 году участники проекта KDE on Cygwin начали портировать кодовую базу Qt/X11, лицензированную под GPL, на Windows. Это было ответом на отказ Trolltech лицензировать Qt/Windows под GPL, мотивированным тем, что Windows не является платформой свободного/открытого программного обеспечения. Проект добился заметных успехов, хотя и не достиг производственного качества. Эта проблема была решена, когда Trolltech выпустила Qt 4.0 также для Windows под лицензией GPL в июне 2005 года. Qt 4 поддерживал тот же набор платформ в версиях с открытым исходным кодом, что и в проприетарной версии, поэтому с Qt 4.0 и последующих версий стало возможным создавать приложения, лицензированные под GPL, с использованием Qt на всех поддерживаемых платформах. Позже, в качестве дополнительной опции лицензирования, была добавлена GPL v3 с особым исключением. Это исключение позволяет лицензировать финальное приложение под различными лицензиями свободного/открытого программного обеспечения, несовместимыми с GPL, такими как Mozilla Public License 1.1.
Приобретение Nokia
Nokia приобрела Trolltech ASA 17 июня 2008 года и переименовала компанию сначала в Qt Software, а затем в Qt Development Frameworks. Nokia сосредоточилась на том, чтобы сделать Qt основной платформой разработки для своих устройств, включая портирование на платформу Symbian S60. Версия 1.0 SDK Nokia Qt была выпущена 23 июня 2010 года. Исходный код был опубликован на Gitorious – репозитории исходного кода на базе git, ориентированном на сообщество, – с целью привлечения более широкого круга пользователей и разработчиков для Qt. 14 января 2009 года в версии Qt 4.5 была добавлена лицензия LGPL, чтобы сделать Qt более привлекательным как для проектов с открытым исходным кодом, не использующих GPL, так и для проприетарных приложений. В феврале 2011 года Nokia объявила о решении отказаться от технологий Symbian и в будущем использовать платформу Windows Phone для своих смартфонов (поддержка этой платформы впоследствии также была прекращена). Месяц спустя Nokia объявила о продаже Digia коммерческих лицензий и услуг профессиональной поддержки Qt, с целью обеспечения поддержки Qt на платформах Android, iOS и Windows 8, а также продолжения развития настольных и встраиваемых систем. При этом Nokia должна была оставаться основной движущей силой разработки фреймворка на тот момент.
Слияние и разделение с Digia
В марте 2011 года Nokia продала часть, отвечающую за коммерческое лицензирование Qt, компании Digia, образовав Qt Commercial. В августе 2012 года Digia объявила о приобретении Qt у Nokia. Команда Qt в Digia приступила к работе в сентябре 2012 года. В течение месяца они выпустили Qt 5.0, а затем новые версии каждые шесть месяцев, добавляя новые функции и поддержку дополнительных платформ. В сентябре 2014 года Digia передала бизнес Qt и авторские права своей полностью принадлежащей дочерней компании The Qt Company, которой принадлежит 25 брендов, связанных с Qt. В мае 2016 года Digia и Qt окончательно разделились на две независимые компании.
Проект Qt и открытое управление
Qt 5 был официально выпущен 19 декабря 2012 года. Эта новая версия ознаменовала значительные изменения в платформе, где важную роль играла аппаратно ускоренная графика, QML и JavaScript. Традиционные виджеты QWidgets, написанные только на C++, продолжали поддерживаться, но не получили преимуществ от повышения производительности, доступного благодаря новой архитектуре. Qt 5 значительно улучшает скорость и удобство разработки пользовательских интерфейсов. Разработка фреймворка Qt 5 перешла к модели открытого управления на qtproject.org, что позволило разработчикам, не входящим в Digia, предлагать патчи для рассмотрения.
Qt вкладчики
Помимо The Qt Company, многие организации и частные лица, использующие Qt как платформу разработки, участвуют в открытой разработке Qt посредством проекта Qt. Одним из таких участников является Klarälvdalens Datakonsult AB, шведская компания, предоставляющая услуги консалтинга по Qt. KDAB участвует в различных областях, включая поддержку и развитие нескольких компонентов. Совместно с RIM/BlackBerry, KDAB поддерживает портирование Qt на QNX и BlackBerry 10. Intel также вносит свой вклад, например, в поддержку Wayland. AudioCodes поддерживает интеграцию с IBM ClearCase в Qt Creator. Как активный пользователь Qt, проект KDE предоставляет множество исправлений и новых функций из своей библиотеки разработчиков KDE Frameworks обратно в Qt.