Qt (, произносится «кьют» как ) — фреймворк для разработки кроссплатформенного программного обеспечения на языке программирования C++. Для многих языков программирования существуют библиотеки, позволяющие использовать преимущества Qt: Python — PyQt, PySide; Ruby — QtRuby; Java — QtJambihttp://www.qtsoftware.com/products/qt/jambi/ ; 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, QNXQt framework for QNX , встраиваемых Linux-систем и платформы S60. Идет портирование на Windows Phone и Windows RTChange I4352629a: Windows RT and Windows Phone preliminary support Qt’s WinRT port and its C++/CX usage . Также идёт портирование на 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/UnixX11Qt для оконного менеджера X (Linux, FreeBSD, HP-UX, Solaris, AIX, и т. д.).WaylandQt для Wayland. Приложения на Qt могут переключаться между графическими бэкэндами вроде X и Wayland во время загрузки, если добавить опцию командной строки -platform. Это позволяет приложениям незаметно переходить с X11 на Wayland.Встраиваемые Linux-системыQt для встраиваемых систем: КПК, смартфонов, и т. д. Существует в виде нескольких платформ, в зависимости от технологии отрисовки. DirectFB, LinuxFB и EGLFS (EGL Full Screen).AndroidQt для Android, ранее известный как Necessitas. Платформы ApplemacOSQt для Apple macOS; поддерживает приложения на Cocoa.iOSQt для iOS платформ (iPhone, iPad). Платформы MicrosoftWindowsQt для Microsoft Windows XP, Vista, 7, 8, 10 и 11.Windows CEQt для Windows CE 6 и Windows Embedded Compact 7.Windows RTПоддержка для основанных на WinRT приложениях для Windows 8 и Windows Phone 8. Начиная с версии 5.4: Windows Phone 8.1. Другие встраиваемые платформыIntegrityQt для Integrity.QNXQt для QNX.VxWorksQt для VxWorks.
После того, как Nokia открыла исходный код Qt сообществу на , появились различные порты. Также есть некоторые порты, которые могут быть доступны, но более не поддерживаются.
Компоненты Библиотека разделена на ряд модулей: QtCore — классы ядра библиотеки, используемые другими модулями; QtGui — компоненты графического интерфейса; QtWidgets — содержит классы для классических приложений на основе виджетов, модуль выделен из QtGui в Qt 5; Qt QML — модуль для поддержки QML; QtNetwork — набор классов для сетевого программирования. Поддержка различных высокоуровневых протоколов может меняться от версии к версии. В версии 6.6.x присутствуют классы для работы с протоколами HTTP, DNS, SCTP. Для работы с протоколами TCP/IP предназначены такие классы, как QTcpServer, QTcpSocket для TCP и QUdpSocket для UDP; QtSvg — классы для отображения и работы с данными Scalable Vector Graphics (SVG); QtXml — модуль для работы с XML, поддерживаются модели SAX и DOM; QtTest — классы для поддержки модульного тестирования; QtQuick — модуль, предоставляющий декларативный фреймворк для создания динамичных, настраиваемых пользовательских интерфейсов. Так же начиная с Qt5 существуют аддоны — модули для решения определенных задач, которые доступны не для всех платформ.
ActiveQt — модуль для работы с ActiveX и COM технологиями для Qt-разработчиков под Windows. Qt 3D Qt Bluetooth Qt Concurrent Qt Help Qt Image Formats Qt Multimedia — модуль для поддержки воспроизведения и записи видео и аудио, как локально, так и с устройств и по сети Qt NFC QtOpenGL — набор классов для работы с OpenGL Qt PDF Qt PrintSupport Qt QuickWidgets Qt Sensors Qt Serialport QtSql — набор классов для работы с базами данных с использованием SQL. Основные классы данного модуля в версии 4.2.х: QSqlDatabase — класс для предоставления соединения с базой, для работы с какой-нибудь конкретной базой данных требует объект, унаследованный от класса QSqlDriver — абстрактного класса, который реализуется для конкретной базы данных и может требовать для компиляции SDK базы данных. Например, для сборки драйвера под СУБД Firebird или InterBase требуются .h-файлы и библиотеки статической компоновки, входящие в комплект поставки данной СУБД; Qt XML QtWebEngine — модуль Chromium, интегрированный в Qt и доступный через её классы. В QT 6.3.0 версия chromium — 94.0
Также реализована технология WoC — widgets on canvas, с помощью которой реализована Plasma в KDE 4.1, Будет возможным использовать виджеты библиотеки Qt прямо в аплетах. Обеспечивает расположение виджетов на QGraphicsView с возможностью масштабирования и различных графических эффектов.
Документация Одно из преимуществ фреймворка 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 Планета Земля, медиаплеер CherryPlayer.
Кроме того, на Qt основана среда рабочего стола KDE, графический интерфейс мобильной ОС MeeGo и Qt Creator — среда разработки на Qt;
Архитектура Qt построен на следующих принципах:
Сигналы и слоты Средство коммуникации между объектами Qt. Виджеты посылают сигнал, который может быть обработан слотом.
Таким образом реализуется паттерн MVC.
Метаобъектный компилятор
Метаобъектная система — часть ядра фреймворка для поддержки в C++ таких возможностей, как сигналы и слоты для коммуникации между объектами в режиме реального времени и динамических свойств системы.
Метаобъектная система содержит: класс QObject, макрос Q_OBJECT и утилиту moc (метаобъектный компилятор). QObject — это базовый класс для всех Qt-классов. Макрос Q_OBJECT используется для включения метаобъектных функций в классах и на этапе компиляции работает как препроцессор, который преобразует применения макроса в исходный код C++.
Языковые привязки Qt доступен для нескольких языков программирования, таких как Python, Java, Rust, Javascript.
Инструменты Проект Qt предоставляет Qt Creator — среду разработки для C++, QML.
Также предоставляется qmake — устаревшее с версии 6 средство сборки, замененное на CMake.
Примечания
Ссылки Официальный сайт Qt
Категория:Свободные библиотеки программ Категория:Программное обеспечение с лицензией GNU GPL Категория:Программное обеспечение с лицензией GNU LGPL Категория:Свободное кроссплатформенное программное обеспечение Категория:Программное обеспечение для Haiku Категория:Программное обеспечение для macOS Категория:Программное обеспечение для Linux Категория:Программное обеспечение для OpenSolaris Категория:Программное обеспечение для Solaris Категория:Программное обеспечение для Windows Категория:Библиотеки виджетов Категория:Библиотеки C++ Категория:Библиотеки на основе X Категория:Свободное программное обеспечение, написанное на C++ Категория:Фреймворки Категория:Проприетарное программное обеспечение