Qt
(
МФА
[
ˈ
k
j
u
ː
t
], произносится
«кьют»
как «cute»
) или неофициально
Q-T
(
«кью-ти», «ку-тэ», «кью-тэ»
) —
фреймворк
для разработки
кроссплатформенного
программного обеспечения на языке программирования
C++
. Для многих языков программирования существуют библиотеки, позволяющие использовать преимущества Qt:
Python
—
PyQt
,
PySide
;
Ruby
—
QtRuby
;
Java
—
QtJambi
;
PHP
—
PHP-Qt
и другие.
Со времени своего появления в
1996 году
библиотека легла в основу многих программных проектов. Кроме того, Qt является фундаментом популярной рабочей среды
KDE Plasma
, входящей в состав многих
дистрибутивов Linux
.
Функции и состав
Qt позволяет запускать написанное с его помощью
программное обеспечение
в большинстве современных
операционных систем
путём простой компиляции программы для каждой системы без изменения
исходного кода
. Включает в себя все основные
классы
, которые могут потребоваться при разработке
прикладного программного обеспечения
, начиная от элементов
графического интерфейса
и заканчивая классами для работы с
сетью
,
базами данных
и
XML
. Является полностью объектно-ориентированным, расширяемым и поддерживающим технику компонентного программирования.
Отличительная особенность — использование метаобъектного компилятора — предварительной системы обработки исходного кода.
Расширение возможностей обеспечивается системой плагинов, которые возможно размещать непосредственно в панели визуального редактора. Также существует возможность расширения привычной функциональности
виджетов
, связанной с размещением их на экране, отображением, перерисовкой при изменении размеров окна.
Комплектуется визуальной средой разработки графического интерфейса
Qt Designer
, позволяющей создавать диалоги и формы в режиме
WYSIWYG
. В поставке Qt есть
— графическая утилита, позволяющая упростить
локализацию
и перевод программы на многие языки; и
— справочная система 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
, встраиваемых Linux-систем и платформы
S60
. Идет портирование на
Windows Phone
и
Windows RT
. Также идёт портирование на
Haiku
и
Tizen
.
Некоторое время библиотека также распространялась ещё в версии Qt/Embedded, предназначенной для применения на встраиваемых и мобильных устройствах, но начиная с середины 2000-х годов она выделена в самостоятельный продукт
Qtopia
.
Начиная с версии 4.5 Qt распространяется по трём лицензиям:
-
— для разработки программного обеспечения с собственнической лицензией, допускающая модификацию самой 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, и т. д.).
|
Wayland
|
Qt для
Wayland
.
Приложения на Qt могут переключаться между графическими бэкэндами вроде X и Wayland во
, если добавить опцию командной строки -platform.
Это позволяет приложениям незаметно переходить с X11 на Wayland.
|
Встраиваемые Linux-системы
|
Qt для встраиваемых систем:
КПК
,
смартфонов
, и т. д.
Существует в виде нескольких платформ, в зависимости от технологии отрисовки.
DirectFB
,
LinuxFB
и EGLFS (
Full Screen).
|
Android
|
Qt для
Android
, ранее известный как Necessitas.
|
Платформы Apple
|
OS X
|
Qt для Apple
OS X
; поддерживает приложения на
Cocoa
.
|
iOS
|
Qt для
iOS
платформ (
iPhone
,
iPad
).
|
Платформы Microsoft
|
Windows
|
Qt для Microsoft
Windows XP
,
Vista
,
7
,
8
и
10
.
|
Windows CE
|
Qt для
Windows CE 6
и
Windows Embedded Compact 7
.
|
Windows RT
|
Поддержка для основанных на
WinRT
приложениях для
Windows 8
и
Windows Phone 8
. Начиная с версии 5.4:
Windows Phone 8.1
.
|
Другие встраиваемые платформы
|
Integrity
|
Qt для
Integrity
.
|
QNX
|
Qt для
QNX
.
|
VxWorks
|
Qt для
VxWorks
.
|
После того, как
Nokia
открыла исходный код Qt сообществу на
, появились различные порты. Также есть некоторые порты, которые могут быть доступны, но более не поддерживаются.
Компоненты
Библиотека разделена на ряд модулей:
-
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
-
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 — подробная документация
, сопровождающаяся большим количеством примеров. Исходный код примеров содержит подробные комментарии и описание, что также упрощает изучение Qt.
Использование
Qt используется в
Autodesk
,
Maya
,
GoldenDict — оболочка для электронных словарей
,
Skype
,
Telegram
,
Медиапроигрыватель VLC
,
VirtualBox
,
Mathematica
, на
European Space Agency
,
DreamWorks
,
Google
,
HP
,
Lucasfilm
,
Panasonic
,
Philips
,
Samsung
,
Siemens
,
Volvo
и
Walt Disney Animation Studios
, ЦАО
,
Google Планета Земля
,
медиаплеер
.
Кроме того, на Qt основана среда рабочего стола
KDE
, графический интерфейс мобильной ОС
MeeGo
и
Qt Creator
— среда разработки на Qt;
Метаобъектная система
Метаобъектная система
— часть ядра фреймворка для поддержки в C++ таких возможностей, как
сигналы и слоты
для коммуникации между объектами в режиме реального времени и динамических свойств системы.
Метаобъектная система содержит: класс
QObject
, макрос
Q_OBJECT
и утилиту
moc
(метаобъектный компилятор).
QObject
— это базовый класс для всех Qt-классов. Макрос
Q_OBJECT
используется для включения метаобъектных функций в классах и на этапе компиляции работает как препроцессор, который преобразует применения макроса в исходный код C++.
Примечания
-
(англ.)
— 2023.
-
(англ.)
— 2023.
-
— 2006.
-
↑
-
-
(англ.)
(12 апреля 2004). Дата обращения: 16 декабря 2011. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Дата обращения: 3 августа 2007. Архивировано из
9 августа 2007 года.
-
(недоступная ссылка)
-
от 2 ноября 2011 на
Wayback Machine
(англ.)
-
от 23 октября 2013 на
Wayback Machine
(англ.)
-
29 октября 2013 года.
(англ.)
-
(неопр.)
. Qt Project (12 августа 2011). Дата обращения: 21 августа 2013.
1 мая 2015 года.
-
Jørgen Lind.
(неопр.)
. Qt Project (18 марта 2011). Дата обращения: 21 августа 2013.
18 июня 2015 года.
-
(неопр.)
. Дата обращения: 25 ноября 2011.
27 апреля 2015 года.
-
Kristian Høgsberg.
(неопр.)
(25 января 2011). Архивировано из
3 февраля 2016 года.
-
(неопр.)
. Qt Project (12 августа 2011). Дата обращения: 10 апреля 2015.
1 мая 2015 года.
-
(неопр.)
. Digia (3 июля 2013). Дата обращения: 10 апреля 2015.
23 апреля 2015 года.
-
(неопр.)
. Дата обращения: 10 апреля 2015. Архивировано из
20 февраля 2016 года.
-
(неопр.)
. Qt Project (14 августа 2011). Дата обращения: 21 августа 2013.
30 апреля 2015 года.
-
(неопр.)
. Дата обращения: 1 февраля 2014.
26 декабря 2014 года.
-
(неопр.)
.
(11 августа 2011). Дата обращения: 11 августа 2013.
30 апреля 2015 года.
-
(неопр.)
.
(29 апреля 2015). Дата обращения: 28 января 2016.
19 января 2016 года.
-
Bjoern Breitmeyer.
(неопр.)
. KDAB (21 августа 2013). Дата обращения: 21 августа 2013.
18 июня 2015 года.
-
(неопр.)
.
. Дата обращения: 9 сентября 2014.
14 июля 2019 года.
-
(неопр.)
. Дата обращения: 28 февраля 2016.
29 февраля 2016 года.
-
(неопр.)
.
Qt - Product - Qt Framework
. The Qt Company. Дата обращения: 21 ноября 2014.
20 ноября 2014 года.
-
Qt Blog.
(неопр.)
. Blog.qt.digia.com. Дата обращения: 19 марта 2013. Архивировано из
8 октября 2013 года.
-
Qt Blog.
(неопр.)
. Blog.qt.digia.com. Дата обращения: 19 марта 2013. Архивировано из
19 апреля 2014 года.
-
(неопр.)
.
wiki.qt.io
. Дата обращения: 24 августа 2022.
24 августа 2022 года.
-
Jono Bacon.
(англ.)
.
(2004). Дата обращения: 16 сентября 2010.
23 августа 2011 года.
-
(англ.)
.
Nokia
. Дата обращения: 16 сентября 2010. Архивировано из
23 августа 2011 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
3 февраля 2012 года.
-
(неопр.)
. Архивировано из
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: Профессиональное программирование на C++. —
СПб.
: БХВ-Петербург, 2007. — 880 с. —
ISBN 978-5-9775-0010-6
.
-
Чеботарев А.
Библиотека Qt 4. Создание прикладных приложений в среде Linux. —
М.
:
, 2006. — 256 с. —
ISBN 5-8459-0996-1
.
Ссылки
-
(англ.)
-
. Olivier Goffart. 2013-07-04. Retrieved 2013-07-04.
|
Технологии
|
|
Инструменты
|
|
Привязки
|
|
Связанные темы
|
|
|
Низко-
уровневые
|
|
Высоко-
уровневые
|
Amiga OS
|
|
Mac OS
и
macOS
|
|
Windows
|
|
UNIX
, под
X
|
|
Кросс-
платфор-
менные
|
На основе Flash
|
|
На основе XML,
AJAX или SVG
|
|
На основе Java
|
|
На основе
C или C++
|
|
На основе Common Lisp
|
|
На основе Pascal
|
|
На основе Python
|
|
На основе Objective C
|
|
|
|