Interested Article - Qt

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++.

Примечания

  1. (англ.) — 2023.
  2. (англ.) — 2023.
  3. — 2006.
  4. (англ.) (12 апреля 2004). Дата обращения: 16 декабря 2011. Архивировано из 3 февраля 2012 года.
  5. . Дата обращения: 3 августа 2007. Архивировано из 9 августа 2007 года.
  6. (недоступная ссылка)
  7. от 2 ноября 2011 на Wayback Machine (англ.)
  8. от 23 октября 2013 на Wayback Machine (англ.)
  9. 29 октября 2013 года. (англ.)
  10. . Qt Project (12 августа 2011). Дата обращения: 21 августа 2013. 1 мая 2015 года.
  11. Jørgen Lind. . Qt Project (18 марта 2011). Дата обращения: 21 августа 2013. 18 июня 2015 года.
  12. . Дата обращения: 25 ноября 2011. 27 апреля 2015 года.
  13. Kristian Høgsberg. (25 января 2011). Архивировано из 3 февраля 2016 года.
  14. . Qt Project (12 августа 2011). Дата обращения: 10 апреля 2015. 1 мая 2015 года.
  15. . Digia (3 июля 2013). Дата обращения: 10 апреля 2015. 23 апреля 2015 года.
  16. . Дата обращения: 10 апреля 2015. Архивировано из 20 февраля 2016 года.
  17. . Qt Project (14 августа 2011). Дата обращения: 21 августа 2013. 30 апреля 2015 года.
  18. . Дата обращения: 1 февраля 2014. 26 декабря 2014 года.
  19. . (11 августа 2011). Дата обращения: 11 августа 2013. 30 апреля 2015 года.
  20. . (29 апреля 2015). Дата обращения: 28 января 2016. 19 января 2016 года.
  21. Bjoern Breitmeyer. . KDAB (21 августа 2013). Дата обращения: 21 августа 2013. 18 июня 2015 года.
  22. . . Дата обращения: 9 сентября 2014. 14 июля 2019 года.
  23. . Дата обращения: 28 февраля 2016. 29 февраля 2016 года.
  24. . Qt - Product - Qt Framework . The Qt Company. Дата обращения: 21 ноября 2014. 20 ноября 2014 года.
  25. Qt Blog. . Blog.qt.digia.com. Дата обращения: 19 марта 2013. Архивировано из 8 октября 2013 года.
  26. Qt Blog. . Blog.qt.digia.com. Дата обращения: 19 марта 2013. Архивировано из 19 апреля 2014 года.
  27. . wiki.qt.io . Дата обращения: 24 августа 2022. 24 августа 2022 года.
  28. Jono Bacon. (англ.) . (2004). Дата обращения: 16 сентября 2010. 23 августа 2011 года.
  29. (англ.) . Nokia . Дата обращения: 16 сентября 2010. Архивировано из 23 августа 2011 года.
  30. . Архивировано из 3 февраля 2012 года.
  31. . Архивировано из 3 февраля 2012 года.
  32. . Архивировано из 3 февраля 2012 года.
  33. . Архивировано из 3 февраля 2012 года.
  34. . Архивировано из 3 февраля 2012 года.
  35. . Архивировано из 3 февраля 2012 года.
  36. . Архивировано из 3 февраля 2012 года.
  37. . Архивировано из 3 февраля 2012 года.
  38. Архивировано из 3 февраля 2012 года.
  39. . Архивировано из 3 февраля 2012 года.
  40. . Архивировано из 3 февраля 2012 года.
  41. . Архивировано из 3 февраля 2012 года.
  42. . Архивировано из 3 февраля 2012 года.
  43. . Архивировано из 3 февраля 2012 года.
  44. . Архивировано из 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 на примерах. — СПб. : «БХВ-Петербург», 2008. — 608 с. — ISBN 978-5-9775-0256-6 .
  • Ж. Бланшет, М. Саммерфилд. . — М. : Кудиц-пресс, 2007. — 648 с. — ISBN 978-5-91136-038-2 .
  • Макс Шлее. 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.
Источник —

Same as Qt