LINUX.ORG.RU

GTK vs Qt в 2021?

 ,


2

2

Чё-то я смотрю, GTK нифига не сдох. Всякие современные убунты предпочитают иметь дефолтным его, а не Qt.

На Qt я писал, но мне не нравится его раздутость, всякие *** с лицензиями-коммерческостью, какой-то этот их moc и в целом размеры этого поделия, делающего его уже не «либой для гуя», а целым фреймворком, где уже и сеть и звук и вебчик и хрен с чертом. Это всё как-то плохо.

GTK кажется более стройной и минималистичной хренью, не пытающейся лезть куда не надо и не пытающейся стать фреймворком для всего, а только GUI-либой, что хорошо. Лицензионный дух более опенсорсовый. Если хотеть её юзать только для GUI и ни для чего более, а особенно если тебе пофиг на сборку под винду/мак (я думаю что оно под них соберётся, но если мне пофиг - то ещё проще), то оно выглядит более няшно под задачу пиления гуёв.

В общем, в чём катастрофическо-стратегические минусы выбора GTK в 2021? Что я сильно теряю, если возьму старое поделие, написанное на Qt в 2011 году и перепишу сейчас его GUI-часть на GTK? Хочется актуализировать одну тулзу, но как вспомню монструозность Qt, то браться не хочется.

Последний прочитанный срач по сабжу: https://www.reddit.com/r/gnome/comments/dhvbqg/what_are_your_reasons_for_choosing_gtk_over_qt/

Софтина уровня «звуковой редактор», но не сложный. Буквально просто нарезка и копипасть кусков звука, плюс спектрограмма-водопад, зум ин, зумаут, save as, load.

кромплатформенность гтк забей ваще как ни крути а на твоё приложение будут смотреть как на гном, даже если ты нормально сделал.

Thero ★★★★★ ()

Ну т.е. в gtk macros-лапша и убогая мимикрия под ООП это норм, а нативная class-лапша и няшный moc, который почти не виден - это «ойойойой, памагите». Как-то непоследовательно выглядит.

Что я сильно теряю

Время.

GUI-часть на GTK

А часть, которая использует классы, перепишешь на убогий gobject? Нравится всякий изврат?

ox55ff ★★★★★ ()

особенно если тебе пофиг на сборку под винду/мак

Под Мак не знаю, а под винду работает почти нормально. Жаль только, современной версии мне найти не удалось в собранном виде, а в той что есть не завезли gl_area. Лично для моих задач не критично, так что свой проект пилю на нем.

Еще в копилку виндовых костылей. У них ведь нет ни контроля зависимостей, ни единого места, где хранятся конфиги, библиотеки и все прочее, ни хотя бы fuse. Так что придется dll’ки таскать с собой и внимательно следить за путями. Наверное это лечится, но я не искал как.

COKPOWEHEU ()
Ответ на: комментарий от xaizek

Есть лучше - verdigris(гитхуб) он и совместим и от мока позволяет избавиться, он С++14, нужно просто пару файлов добавить в проект и видоизменённые макросы пользовать.

AKonia ★★ ()
Последнее исправление: AKonia (всего исправлений: 6)

Qt будет везде хорошо выглядеть, и речь не только о кросскомпиляции для Windows/Mac, но и про окружения с GTK.

Но согласен, что Qt монструозное говно. Хотя если пишешь на C++, то GTK тоже говно, со своими типами из glib вместо stl.

SR_team ★★★★★ ()
Последнее исправление: SR_team (всего исправлений: 2)

Qt конечно. Это профессиональный инструмент, на котором можно делать GUI любого дизайна и сложности через QML.

ПО поводу раздутости. Ну и что с того? Зачем этого бояться? Не нужна тебе сеть - так не используй. Не нужен SQL функционал - не используй. Твое приложение будет зависеть ТОЛЬКО от тех библиотек Qt, функционал которых ты используешь и все. Вот например список Qt библиотек (уж простите за виндовую версию), от которых зависит простое Gui приложение, которое выполняет простые манипуляции с изображениями:

Qt5Core.dll
Qt5Svg.dll
Qt5Widgets.dll
Qt5Gui.dll
D3Dcompiler_47.dll
libEGL.dll
libGLESV2.dll
opengl32sw.dll

iconengines/qsvgicon.dll

imageformats/qsvg.dll
imageformats/qwebp.dll
imageformats/qtiff.dll
imageformats/qwbmp.dll
imageformats/qtga.dll
imageformats/qicns.dll
imageformats/qico.dll
imageformats/qjpeg.dll
imageformats/qgif.dll

platforms\qwindows.dll

styles\qwindowsvistastyle.dll

Все это примерно 50Mb - разве много?

Зато если вдруг нужна сеть - пожалуйста, нужна работа с SerialPort - пожалуйста, нужно нарисовать диаграмму - да не вопрос. Даже под Android работает, причем и пакеты можно строить через Qt Creator и запускать на телефоне в отладочном режиме.

Еще плюс в том, что у Qt есть шикарный класс для работы со строками QString с хранением в юникоде по 16 бит на символ (если код символа меньше чем 65536).

А то, что она коммерческая - так это хорошо, значит она уже доросла до того уровня, когда крупные компании платят за ее лицензию деньги и тем самым уменьшают вероятность того, что на ее разработку забьют болт.

Еще кстати, знание Qt требуется в некоторых вакансиях.

Не нужно стремиться к этим минимальным библиотекам, которые могут перестать разрабатываться и развиваться по причине того, что их использует 2.5 человека.

rumgot ★★★★★ ()
Последнее исправление: rumgot (всего исправлений: 2)

Типичный пример теоремы Эскобара. Бери wxWidgets, или fltk если надо просто «либу для гуя». Qt в особенности плох тем, что с большим трудом и костылями привинчивается куда-то кроме крестов.

no-such-file ★★★★★ ()

Мне кажется на Qt будет проще реализовать сложный гуй, со своими виджетами и т.д. А если у тебя гуй вида «одна палка два струна», то без разницы.

Im_not_a_robot ★★★★★ ()
Ответ на: комментарий от xDShot

Msys2

Да вроде оттуда и брал, правда пару лет назад. Сейчас gl_area добавили? Впрочем, пока у меня мало времени все это ковырять, так что спасибо за информацию, но полностью оценить не смогу.

COKPOWEHEU ()

в чём катастрофическо-стратегические минусы выбора GTK в 2021?

В том, что в 2022 они могут выпилить оттуда GUI, как слишком сложное для пользователя.

как вспомню монструозность Qt, то браться не хочется

То есть, написать быстро и легко не хочется, хочется посношать свой моск? Ну бывает, чо.

anonymous ()

Только GTK. Выбор-то сам знаешь какой.

Насчет винды — у них там WSL появился, который хорошо запускает GTK-приложения. Так что теперь можно даже не думать об этом.

minda ()

раздутость

Никто эту раздутость пока ещё объективно не оценил. Более того, сравнивать Qt и GTK методически неверно — это типа сравнения готового ниссана с корпусом от ситроена. Если сравнивать — то Qt vs GTK+GObject+libxml2+чегоутебятамещё…

всякие *** с лицензиями-коммерческостью

Тебе СПО или проприетарщину? Если первое — тебя существование коммерческой лицензии Qt вообще не должно волновать. Она для того, чтобы богатенькие буратины покупали Qt, а авторы могли нас и дальше радовать новыми версиями. При написании GPL-софта ВСЯ Qt к твоим услугам.

Если второе — есть нюансы, да. Но множество коммерсов аккуратно соблюдает условия LGPL и пользуется Qt на законных основаниях (модули там уже не все, правда, но основные есть, «либа для гуя» уж точно имеется).

какой-то этот их moc

Кодогенератор, у которого на выходе стандартный C++, почему тебя это волнует?

и в целом размеры этого поделия, делающего его уже не «либой для гуя», а целым фреймворком

А так и есть. GTK — либа для гуя, Qt — фреймворк.

где уже и сеть и звук и вебчик и хрен с чертом

Причём фреймворк модульный. Ты не обязан использовать ни звук, ни вебчик.

В общем, в чём катастрофическо-стратегические минусы выбора GTK в 2021?

Да ни в чём. Нравится GTK — пиши на GTK.

Что я сильно теряю, если возьму старое поделие, написанное на Qt в 2011 году и перепишу сейчас его GUI-часть на GTK?

А в не-GUI-части, случайно никакой QtCore не использовался? А то программа, в ядре которой QString, но с GTK-UI — это прикольно будет.

Что за тулза то хоть? Что-то проприетарное для себя или заброшенный опенсорс? А то если второе, может, аналоги уже есть…

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 2)

GTK и C.

И под онтопик и под офтопик работает вполне нормально. На маках не пробовал.

Под офтопик ставите msys2 и доустанавливаете пакеты glade примерно так:

pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-gtk3 mingw-w64-x86_64-glade
pacman -S make

Здесь описано полностью

Как билдить и деплоить аппликухи с GTK под офтоп тут рассказано.

P.S.

Софтина уровня «звуковой редактор», но не сложный. Буквально просто нарезка и копипасть кусков звука, плюс спектрограмма-водопад, зум ин, зумаут, save as, load.

Если у Вас там в коде есть части, завязанные плотно на API системы, то Вам лучше их и продолжать так же писать, с применением соответсвующих системных API, очевидно. А GUI проще на С с GTK наваять, да не париться. На мой взгляд.

Оно не так просто основная масса дистростроителей сидят на GTK/GNOME. Помнится, убунточка попыталась слезть, но как-то не фартануло в итоге опять вернулись.

Moisha_Liberman ★★ ()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)

А gtk’шная экосистема ничем в лучшую сторону не отличается кроме лиценции.

На Qt я писал, но мне не нравится его раздутость, всякие *** с лицензиями-коммерческостью, какой-то этот их moc

В g-не вместо moc нагорожено всяких gobject-introspection и vala, которые на порядки блевотнее. Без них руками писать то что за тебя может написать компьютер я врагу не пожелаю.

и в целом размеры этого поделия

Если говорить, например, об одном только gui, то qt по легковесности выигрывает с большим отрывом:

% pkg info -s qt5-widgets qt5-core qt5-gui gtk3 glib 
qt5-widgets-5.15.2_3           9.64MiB
qt5-core-5.15.2_5              10.6MiB
qt5-gui-5.15.2_7               21.8MiB
gtk3-3.24.30                   74.2MiB
glib-2.70.0_1,2                14.2MiB

делающего его уже не «либой для гуя», а целым фреймворком

Ну во-первых, Qt модульный - для гуя как я уже написал нужно только core, gui и widgets, а может даже только одно из последних двух. Зависимостей у них почти нет.

где уже и сеть и звук и вебчик и хрен с чертом

В qt всё это опционально, а g-экосистеме это всё тоже есть в виде gtk-webkit и мразотного gstreamer’а.

Всякие современные убунты предпочитают иметь дефолтным его, а не Qt

Только убунта и предпочитает, и то по политическим причинам. На самом деле gtk вполне себе сдох, и почти не используется вне гномовской экосистемы. Для самостоятельных приложений таки предпочитают Qt, чего и тебе советую. Вопрос с лицензией конечно мутноватый, но пока поводов для опасения если ты не поганый проприетарщик не вижу.

slovazap ★★★★★ ()

GTK кажется более стройной и минималистичной хренью, не пытающейся лезть куда не надо и не пытающейся стать фреймворком для всего

Рассмешили. glib суют куда только можно. А также производные проекты вроде gstreamer. Они уже часть KDE захвалили.

X512 ★★ ()

В общем, в чём катастрофическо-стратегические минусы выбора GTK в 2021?

Он плохо интегрируется в среды громе Гнома и выглядит инородно. Qt везде интегрируется и выглядит нативно включая Гном. Если есть цель чтобы программой пользовались не только на GNOME, то лучше не выбирать GTK.

X512 ★★ ()
Ответ на: комментарий от X512

Заголовки Qt приложений под Wayland в GNOME 3 – говно. У окон нет теней, кнопки адекватно не нажимаются (даже нет аниммаций), текст заголовка рисуется коряво, но самое хреновое, что ресайз окна работает с ужасными багами, в границы окна для ресайза и перемещения хрен попадёшь. Все эти вопросы «решаются» уже несколько лет, а воз и ныне там. QGnomePlatform по сути один человек пилит, много он не напилит.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Спасибо за информацию. Надо будет посмотреть. У меня пока Wayland нигде нет.

QGnomePlatform по сути один человек пилит, много он не напилит

То что это может пилить один человек наглядно демонстрирует портируемость Qt. С GTK ситуация выглядит более неподъёмно. У меня возникла идея использовать Wayland протокол вместо портирования платформенного кода, но там epoll, которого нигде кроме Линукса нет.

X512 ★★ ()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от t184256

Тред про 2021, не вводи людей в заблуждение.

Ну в том же Cinnamon приложение Kate (что на Qt) выглядит вполне нативно. При этом сейчас мода на свой уникальный дизайн в каждом приложении, поэтому нужен ли вообще сейчас нативный вид. Дай Бог, чтобы хотя бы был выбор между светлой и темной темами.

rumgot ★★★★★ ()
Последнее исправление: rumgot (всего исправлений: 2)
Ответ на: комментарий от EXL

50 MB уже заставляет задумываться о том, чтобы приложение сделать на Electron

И что, и потребление ОЗУ будет сравнимо? А если я хочу, чтобы на Raspberry Pi работало?

или Java

Ну Java ещё ладно…

hobbit ★★★★★ ()
Ответ на: удаленный комментарий

На electron или java? Серьезно? Ну ладно еще java. Но бля electron. Эта тупорылая идея перенести web-ню на десктоп - это за гранью.

Мне самому эта идея не нравится, но всё чаще и чаще многие выбирают Electron вместо Qt.

EXL ★★★★★ ()
Ответ на: Qt5 в 2021 от anonymous

В коммерческой разработке пока на Qt6 не спешат переходить. Поэтому имеет смысл. В целом там не так чтобы принципиально отличается. Поэтому начни с Qt5, а потом перейдешь на Qt6.

rumgot ★★★★★ ()