Qt
Ошибка скрипта: Модуля «hatnote» не существует.{{#if: | }} Шаблон:Карточка программы
Qt (МФА Шаблон:МФА2, произносится «кью-ти» как «Q-T»<ref>Шаблон:Cite web</ref>) или неофициально Q-T («кьют», «ку-тэ», «кью-тэ») — фреймворк для разработки кроссплатформенного программного обеспечения на языке программирования C++. Для многих языков программирования существуют библиотеки, позволяющие использовать преимущества Qt: Python — PyQt, PySide; Ruby — QtRuby<ref>Шаблон:Cite web</ref>; Java — QtJambi<ref>http://www.qtsoftware.com/products/qt/jambi/ Шаблон:Deadlink</ref>; 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<ref>Qt framework for QNX Шаблон:WaybackШаблон:Ref</ref>, встраиваемых Linux-систем и платформы S60. Идет портирование на Windows Phone и Windows RT<ref>Change I4352629a: Windows RT and Windows Phone preliminary support Шаблон:WaybackШаблон:Ref</ref><ref>Qt’s WinRT port and its C++/CX usage Шаблон:WebarchiveШаблон:Ref</ref>. Также идёт портирование на 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, и т. д.).<ref>Шаблон:Cite web</ref> |
| Wayland | Qt для Wayland.<ref>Шаблон:Cite web</ref> Приложения на Qt могут переключаться между графическими бэкэндами вроде X и Wayland во время загрузки, если добавить опцию командной строки -platform.<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref> Это позволяет приложениям незаметно переходить с X11 на Wayland. |
| Встраиваемые Linux-системы | Qt для встраиваемых систем: КПК, смартфонов, и т. д.<ref>Шаблон:Cite web</ref> Существует в виде нескольких платформ, в зависимости от технологии отрисовки. DirectFB, LinuxFB и EGLFS (EGL Full Screen). |
| Android | Qt для Android<ref name="Digia">Шаблон:Cite web</ref>, ранее известный как Necessitas.<ref>Шаблон:Cite web</ref> |
| Платформы Apple | |
| macOS | Qt для Apple macOS; поддерживает приложения на Cocoa.<ref>Шаблон:Cite web</ref> |
| iOS | Qt для iOS платформ (iPhone, iPad).<ref>Шаблон:Cite web</ref> |
| Платформы Microsoft | |
| Windows | Qt для Microsoft Windows XP, Vista, 7,<ref>Шаблон:Cite web</ref> 8 и 10.<ref>Шаблон:Cite web</ref> |
| Windows CE | Qt для Windows CE 6 и Windows Embedded Compact 7.<ref>Шаблон:Cite web</ref> |
| Windows RT | Поддержка для основанных на WinRT приложениях для Windows 8 и Windows Phone 8<ref>Шаблон:Cite web</ref>. Начиная с версии 5.4: Windows Phone 8.1.<ref>Шаблон:Cite web</ref> |
| Другие встраиваемые платформы | |
| Integrity | Qt для Integrity.<ref>Шаблон:Cite web</ref> |
| QNX | Qt для QNX.<ref>Шаблон:Cite web</ref> |
| VxWorks | Qt для VxWorks.<ref>Шаблон:Cite web</ref> |
После того, как Nokia открыла исходный код Qt сообществу на Шаблон:Iw, появились различные порты. Также есть некоторые порты, которые могут быть доступны, но более не поддерживаются.
Компоненты
Библиотека разделена на ряд модулей:
- 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<ref>Шаблон:Cite web</ref>
Также реализована технология WoC — widgets on canvas, с помощью которой реализована Plasma в KDE 4.1, Будет возможным использовать виджеты библиотеки Qt прямо в аплетах. Обеспечивает расположение виджетов на QGraphicsView с возможностью масштабирования и различных графических эффектов.
Документация
Одно из преимуществ фреймворка Qt — подробная документация<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web </ref>, сопровождающаяся большим количеством примеров. Исходный код примеров содержит подробные комментарии и описание, что также упрощает изучение Qt.
Использование
Qt используют Autodesk, Maya<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref>, GoldenDict — оболочка для электронных словарей, Skype, Telegram, Медиапроигрыватель VLC<ref>Шаблон:Cite web</ref>, VirtualBox, Mathematica<ref>Шаблон:Cite web</ref>, на European Space Agency<ref>Шаблон:Cite web</ref>, DreamWorks<ref>Шаблон:Cite web</ref><ref>Шаблон:Cite web</ref>, Google, HP<ref>Шаблон:Cite web</ref>, Lucasfilm<ref>Шаблон:Cite web</ref>, Panasonic<ref>Шаблон:Cite web</ref>, Philips<ref>Шаблон:Cite web</ref>, Samsung<ref>Шаблон:Cite web</ref>, Siemens<ref>Шаблон:Cite web</ref>, Volvo<ref>Шаблон:Cite web</ref> и Walt Disney Animation Studios<ref>Шаблон:Cite web</ref>, 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Шаблон:Ref
- «Re-implementing Qt moc using libclang». Olivier Goffart. 2013-07-04. Retrieved 2013-07-04.
- Страницы с ошибками скриптов
- Википедия:Страницы с шаблоном Другие значения с устаревшим параметром
- Qt
- Свободные библиотеки программ
- Программное обеспечение с лицензией GNU GPL
- Программное обеспечение с лицензией GNU LGPL
- Свободное кроссплатформенное программное обеспечение
- Программное обеспечение для Haiku
- Программное обеспечение для macOS
- Программное обеспечение для Linux
- Программное обеспечение для OpenSolaris
- Программное обеспечение для Solaris
- Программное обеспечение для Windows
- Библиотеки виджетов
- Библиотеки C++
- Библиотеки на основе X
- Свободное программное обеспечение, написанное на C++
- Фреймворки
- Проприетарное программное обеспечение