Qt | |
---|---|
![]() | |
![]() Скриншот редактирования простого интерфейса в Qt Creator 3.1.1 | |
Тип | библиотека виджетов[d] |
Автор | Haavard Nord[d][3] и Eirik Chambe-Eng[d][3] |
Разработчик | Qt Project[d][1] и Qt Development Frameworks |
Написана на | C++[4] |
Операционная система | GNU/Linux[d][5], Microsoft Windows[5], macOS[5], BSD[d][5], Android[5] и iOS[5] |
Первый выпуск | 1995 |
Последняя версия | |
Тестовая версия | |
Лицензия | LGPL-3.0[d][5][7], GNU GPL 2[5] и GNU GPL 3[5] |
Сайт | qt.io (англ.) |
![]() |
Qt (произносится [ˈkjuːt] (кьют) как «cute»[8] или неофициально Q-T (кью-ти)) — кроссплатформенный фреймворк для разработки программного обеспечения на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python — PyQt, PySide; Ruby — QtRuby[9]; Java — Qt Jambi[10]; PHP — PHP-Qt и другие.
Со времени своего появления в 1996 году библиотека легла в основу многих программных проектов. Кроме того, Qt является фундаментом популярной рабочей среды KDE, входящей в состав многих дистрибутивов 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, Mac OS X, Microsoft Windows CE, QNX[11], встраиваемых Linux-систем и платформы S60. Идет портирование на Windows Phone и Windows RT[12][13]. Также идёт портирование на Haiku и Tizen.
Некоторое время библиотека также распространялась ещё в версии Qt/Embedded, предназначенной для применения на встраиваемых и мобильных устройствах, но начиная с середины 2000-х годов она выделена в самостоятельный продукт Qtopia.
Начиная с версии 4.5 Qt распространяется по трём лицензиям:
Исходный , единый для всех вариантов лицензий, свободно доступен в 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, и т. д.).[14] |
Wayland | Qt для Wayland.[15] Приложения на Qt могут переключаться между графическими бэкэндами вроде X и Wayland во время загрузки, если добавить опцию командной строки -platform.[16][17] Это позволяет приложениям незаметно переходить с X11 на Wayland. |
Встраиваемые Linux-системы | Qt для встраиваемых систем: КПК, смартфонов, и т. д.[18] Существует в виде нескольких платформ, в зависимости от технологии отрисовки. DirectFB, LinuxFB и EGLFS (EGL Full Screen). |
Android | Qt для Android[19], ранее известный как Necessitas.[20] |
Платформы Apple | |
OS X | Qt для Apple OS X; поддерживает приложения на Cocoa.[21] |
iOS | Qt для iOS платформ (iPhone, iPad).[22] |
Платформы Microsoft | |
Windows | Qt для Microsoft Windows XP, Vista, 7,[23] 8 и 10.[24] |
Windows CE | Qt для Windows CE 6 и Windows Embedded Compact 7.[25] |
Windows RT | Поддержка для основанных на WinRT приложениях для Windows 8 и Windows Phone 8[26]. Начиная с версии 5.4: Windows Phone 8.1.[27] |
Другие встраиваемые платформы | |
Integrity | Qt для Integrity.[28] |
QNX | Qt для QNX.[29] |
VxWorks | Qt для VxWorks.[30] |
После того, как Nokia открыла исходный Qt сообществу на Gitorious[en], появились различные порты. Также есть некоторые порты, которые могут быть доступны, но более не поддерживаются.
Библиотека разделена на ряд модулей:
Также реализована технология 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 является наличие качественной документации[31][32], в отличие, например, от wxWidgets. Статьи документации снабжены большим количеством примеров. Исходный самой библиотеки хорошо форматирован, подробно комментирован и легко читается, что также упрощает изучение Qt.
Qt используется в Autodesk Maya,[33][34], Skype, Telegram, Медиапроигрыватель VLC,[35] VirtualBox, и Mathematica,[36] и на European Space Agency,[37] DreamWorks,[38][39] Google, HP,[40] Lucasfilm,[41] Panasonic,[42] Philips,[43] Samsung,[44] Siemens,[45] Volvo[46] и Walt Disney Animation Studios, ЦАО[47], Google Планета Земля, медиаплеер CherryPlayer.
Кроме того, на Qt основана среда рабочего стола KDE, графический интерфейс мобильной ОС MeeGo и Qt Creator — среда разработки на Qt;
Метаобъектная система — часть ядра фреймворка для поддержки в С++ таких возможностей, как сигналы и слоты для коммуникации между объектами в режиме реального времени и динамических свойств системы.
Метаобъектная система содержит: класс QObject
, макрос Q_OBJECT
и утилиту moc
(метаобъектный компилятор). QObject
— это базовый класс для всех Qt-классов. Макрос Q_OBJECT
используется для включения метаобъектных функций в классах и на этапе компиляции работает как препроцессор, который преобразует применения макроса в исходный C++.
![]() Инструментарии (наборы) элементов графического интерфейса | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Низко- уровневые | |||||||||||||||||||||||||||
Высоко- уровневые |
|