Со времени своего появления в
1996 году
библиотека легла в основу многих программных проектов. Кроме того, Qt является фундаментом популярной рабочей среды
KDE Plasma
, входящей в состав многих
дистрибутивов Linux
.
Отличительная особенность — использование метаобъектного компилятора — предварительной системы обработки исходного кода.
Расширение возможностей обеспечивается системой плагинов, которые возможно размещать непосредственно в панели визуального редактора. Также существует возможность расширения привычной функциональности
виджетов
, связанной с размещением их на экране, отображением, перерисовкой при изменении размеров окна.
Комплектуется визуальной средой разработки графического интерфейса
Qt Designer
, позволяющей создавать диалоги и формы в режиме
WYSIWYG
. В поставке Qt есть
— графическая утилита, позволяющая упростить
локализацию
и перевод программы на многие языки; и
— справочная система Qt, упрощающая работу с документацией по библиотеке, а также позволяющая создавать кроссплатформенную справку для разрабатываемого на основе Qt программного обеспечения. Начиная с версии 4.5.0 в комплект включена среда разработки
Qt Creator
, которая включает
редактор кода
, справку, графические средства Qt Designer и возможность отладки приложений. Qt Creator может использовать
GCC
или Microsoft VC++ в качестве компилятора и
GDB
в качестве отладчика. Для Windows-версий библиотека комплектуется компилятором, заголовочными и объектными файлами
MinGW
.
Некоторое время библиотека также распространялась ещё в версии 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 работает на большом количестве разных платформ; следующие поддерживаются официально:
Qt для
Wayland
.
Приложения на Qt могут переключаться между графическими бэкэндами вроде X и Wayland во
, если добавить опцию командной строки -platform.
Это позволяет приложениям незаметно переходить с X11 на Wayland.
Встраиваемые Linux-системы
Qt для встраиваемых систем:
КПК
,
смартфонов
, и т. д.
Существует в виде нескольких платформ, в зависимости от технологии отрисовки.
DirectFB
,
LinuxFB
и EGLFS (
Full Screen).
После того, как
Nokia
открыла исходный код Qt сообществу на
, появились различные порты. Также есть некоторые порты, которые могут быть доступны, но более не поддерживаются.
Компоненты
Библиотека разделена на ряд модулей:
QtCore — классы ядра библиотеки, используемые другими модулями;
QtGui — компоненты графического интерфейса;
QtWidgets — содержит классы для классических приложений на основе виджетов, модуль выделен из QtGui в Qt 5;
QtNetwork — набор классов для сетевого программирования. Поддержка различных высокоуровневых протоколов может меняться от версии к версии. В версии 4.2.x присутствуют классы для работы с протоколами
FTP
и
HTTP
. Для работы с протоколами
TCP/IP
предназначены такие классы, как QTcpServer, QTcpSocket для TCP и QUdpSocket для UDP;
QtSql — набор классов для работы с базами данных с использованием
SQL
. Основные классы данного модуля в версии 4.2.х: QSqlDatabase — класс для предоставления соединения с базой, для работы с какой-нибудь конкретной базой данных требует объект, унаследованный от класса QSqlDriver — абстрактного класса, который реализуется для конкретной базы данных и может требовать для компиляции SDK базы данных. Например, для сборки драйвера под СУБД
Firebird
или
InterBase
требуются .h-файлы и библиотеки статической компоновки, входящие в комплект поставки данной СУБД;
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.
Метаобъектная система
— часть ядра фреймворка для поддержки в C++ таких возможностей, как
сигналы и слоты
для коммуникации между объектами в режиме реального времени и динамических свойств системы.
Метаобъектная система содержит: класс
QObject
, макрос
Q_OBJECT
и утилиту
moc
(метаобъектный компилятор).
QObject
— это базовый класс для всех Qt-классов. Макрос
Q_OBJECT
используется для включения метаобъектных функций в классах и на этапе компиляции работает как препроцессор, который преобразует применения макроса в исходный код C++.
Примечания
(англ.)
— 2024.
(англ.)
— 2023.
— 2006.
↑
(англ.)
(12 апреля 2004). Дата обращения: 16 декабря 2011. Архивировано из
3 февраля 2012 года.
(неопр.)
. Дата обращения: 3 августа 2007. Архивировано из
9 августа 2007 года.
Макс Шлее.
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
.