Говорим про либы: GTK и QT [1]
Уж очень часто в современной разработке софта под Linux, программистам приходится взаимодействовать с библиотеками GTK и QT. Будь-то приложение по управлению системами IOT (Internet of things) либо сетевой менеджер, не всех может устроить взаимодействие с утилитой через CLI (command line interface), поэтому для повышения комфорта в использовании, приходится прибегать к графическому туллкиту.
В этой серии постов я, через призму личного опыта, постараюсь объяснить вам то, что из себя представляют библиотеки GTK и QT, для чего они необходимы, c какими ЯП используются и, на сколько востребованы при трудоустройстве.
Что вообще такое это ваше GTK и QT?
Для разработки графических приложений нам нужен какой-то, желательно, простой в использовании, инструментарий - API, через которое можно попросить ряд подсистем нашей операционки создать окно, отрисовать кнопку, повесить на нее ивент и выполнить определенный набор инструкций по требованию.
Парочка GTK/QT, как раз и является тем самым высокоуровневым API над такими платформозависимыми технологиями, как X11, WinAPI, WaylandAPI и т.д.
Целые окружения рабочего стола, со всеми их графическими утилитами, написаны на этих библиотеках - так GNOME использует GTK, KDE, в свою очередь, построен на QT.
Вид некоторых виджетов GTK приложений сильно отличается от тех, которые предлагает QT, из-за чего желательно, чтобы системные приложения внутри определенного DE (Desktop Environment) были написаны на том же графическом туллките, что и сами компоненты окружения.
GTK - это многомодульный GUI туллкит, который разработан на языке программирования C в рамках проекта GNOME и необходим для создания графических интерфейсов под разные системные платформы: Windows, Linux, MacOS. Преимущественно, конечно же, именно под Linux.
Когда-то, еще в бородатые годы, пробовал запуститься на Windows, но, ребята, оно того не стоит. Для MacOS и Windows существуют гораздо более предпочтительные альтернативы.
Для GTK, дабы облегчить процесс создания интерфейсов и избавить вас от необходимости кодом прописывать свойства для виджетов, придумали ряд полезных инструментов, которые позволяют визуально прорабатывать дизайн, накидывать виджеты на макет и выдавать готовый XML.
Самыми удобными и проработанными утилитами, из тех, что мне приходилось использовать, могу назвать GLADE и Cambalache.
Qt уже не отнесешь к группе "просто" GUI туллкитов. В отличии от GTK, Qt является полноценным фреймворком для разработки приложений: гораздо более функциональным, громоздким и, написанным на C++.
Тут вам и API по построению клиент-серверной архитектуры и кастомные типы данных и различные медиа классы и готовые сущности для работы с базами данных и SQL.
Возможностей фреймворка может сполна хватать для разработки разного рода приложений, благодаря чему, программисту не приходится подключать ряд сторонних зависимостей, разбираться в их структуре и проверять работоспособность на разных платформах.
На Qt, без всяких там boost, ASIO и, уж тем более, платформозависимых системных обращений, можно построить многопоточный сетевой аппликейшн.
Приложение, написанное на том, что Qt предоставляет из коробки будет структурно выглядеть приемлемо - иметь единый стиль и, с высокой вероятностью, работать корректно на разных поддерживаемых платформах, среди которых: Windows, Linux, MacOS, Android, IOS.
При работе с GTK тоже можно использовать реализации различных структур данных, API под разные задачи - все это присутствует в сторонних библиотеках, разработанных проектом GNOME (GLib, GIO и т.д.), но по удобству использования и функциональности это, конечно, не дотягивает до Qt.
Qt также может похвастаться, как мне кажется, хорошим IDE (Qt Creator), который позволяет вам удобно вести полный цикл разработки приложения - переключаться между версткой дизайна и кодом, заниматься отладкой и профилированием, взаимодействовать с системой контроля версий и т.д.
Linux++ | IT-Образование
Post #71
7.7K
- 👍 28
- 🔥 14
- ❤ 5
- 🥰 2
- 🎃 1