LINUX.ORG.RU

Qt vs GTK+

 , , ,


0

2

Salve, amici:)

Это мое первое сообщение на данном форуме, так что сильно не бейте:)

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

Довольно хорошо владею Си и C++, для меня по барабану какой язык использовать. Но если я правильно понимаю, выбрав Qt лучше писать на C++, а GTK+ — тогда воспользоваться чистым C?



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

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

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

Qt пофичастей будет. В GTK некоторые вещи не впиливают десятилетиями (при этом активно фигачат GTK 3, толком не доделав GTK 2). Проявляется в мелочах, из последнего что помню - в tree view не запоминается fold state, то есть вообще никак. Хочешь - пили свой TreeView или используй урезанный стандартный. А Docked Widgets там нет и не будет (в Qt ещё со времён царя гороха пользователь может таскать контролы как душе угодно).

Для нового проекта, для которого не критична привязка ко всем языкам мира я бы выбрал Qt. К тому же если логику отделить от интерфейса можно без особых проблем сделать морду сразу к двум тулкитам. С одной стороны у GTK меньше потребление памяти и меньше рантайм, с другой - это просто следствие посредственного набора возможностей. Ну и ещё леденящие душу исходники GTK-приложений (и самого GTK) отпугивают.

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

Вопрос состоит в следующем: требуется написать пакет программ с графическим интерфейсом.

А кроме графического интерфейса там что-нибудь понадобится? Базы данных, XML, работа с сетью, потоки, привязки к OpenGL?

Просто в программе на Qt всё это делается из коробки средствами самой Qt. А с GTK+ придётся подбирать кучу соответствующих библиотек. Причём если в линуксе зависимости тащатся просто, то в винде каждая лишняя библиотека это + к головной боли.

Это может быть как плюсом, так и минусом. Я, например, обленился и предпочитаю Qt. Плата - надо тащить кутешные библиотеки, но опять-таки голова из-за них болит преимущественно в винде. В линуксе просто перед опакечиванием собираешь под Qt версии из нужного репозитария, и всё.

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

Слабая аргументация.
Первым скрином ты привёл изображение аж 2003-го года, причём Konqueror'а, который не чистый Qt, а KDE. А как известно, KDE имеет собственные контроллы и KDE-приложения выглядят как говно и в OS X и в Windows (где они ещё тупо по джва часа стартуют).
Вторым скрином ты привёл какой-то пример из набора QtSDK. Заметь, что контроллы там нативные, а портят вид лишь говняные иконки сделанные наспех Qt-девелоперами. Их можно сменить. Ещё заметь, что рендеринг текста там чисто OS X'овский - мохнатые шрифты.
Третьим скрином ты привёл Qt Creator, который вообще нигде не выглядит нативно и имеет перегруженные и кастомизированные виджеты (специально для того, чтобы юзеры могли беспрепятственно мигрировать во время разработки между OS). И выбрал ты недоделанный Designer для QML. Вот, посмотри лучше на редактор кода.

Давай лучше посмотрим на реальные приложения для OS X, использующие Qt, которыми пользуются хотя бы несколько человек:

EXL ★★★★★
()

Пишу на gtk, кушает меньше, если маны покурить, то использовать его просто, но есть минус - это портирование на вин.

sol13 ★★★★★
()

Линус выбирает Qt. Аргументы там.

anonymous
()
Ответ на: комментарий от waker

GTK тоже работает на win/osx.

Спасибо, улыбнуло.

anonymous
()
Ответ на: комментарий от CrossFire

Если немного поколдовать над стилями, кутэ смотрится как минимум близко к нативному

с GTK такое тоже возможно, хоть тот же monodevelop взять. но все равно далеко от нативного.

а на твоем скрине вообще не нативное совсем.

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

Раз не кроссплатформенно, то ненужно.

почему сразу не кроссплатформенно? поддерживается android, *bsd, opensolaris, gnu/linux, osx, и даже на maemo народ запускал. просто под венду вообще нет никакого смысла поддерживать.

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

Причём если в линуксе зависимости тащатся просто, то в винде каждая лишняя библиотека это + к головной боли.

это массовое заблуждение. как раз под вендой библиотеки без проблем какие хочешь юзай. а под линухом, в разных дистрах либы разных версий, или в каких-то дистрах их вообще нет, а если тащишь нужное с собой — то в репы не принимают, т.к. нарушение maintainer guidelines.

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

Давай лучше посмотрим на реальные приложения для OS X

qbitorrent

Ну и сравни с Deluge. В qtorrent'e горизонтальная прокрутка (даже на очень большом мониторе!), невнятные смазанные кнопки, в Deluge всё аккуратно и наглядно.

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

Давай лучше посмотрим на реальные приложения для OS X, использующие Qt, которыми пользуются хотя бы несколько человек:

ну давай. ты привел скрины, во-первых, тоже многолетней давности (судя по оформлению скроллбаров и кнопок), а во-вторых, нативными они кажутся только тем, кто макось видел только в виде закосов на лоре.

т.е. нативность того же уровня, что и у GTK, примерно. о чем спор?

посмотри лучше на редактор кода.

ага, оценивать нативность по скрину, на котором нет _ни одного_ стандартного виджета. nice try.

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

зы: если что, я не спорю «GTK vs Qt», т.к. мне, в данный момент, противны оба тулкита. GTK имеет смысл только на линухе, и то в данный момент это чревато, я бы не рискнул. Qt мне просто не нравится вообще ничем. особенно не нравится из-за C++. не понимаю его смысла. на OSX я предпочитаю Cocoa, а на венде Win32 API.

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

мнение разработчика аудиоплеера о судьбе целой программной экосистемы, конечно, многого стоит

имею такое же право на мнение, как и ты.

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

т.е. нативность того же уровня, что и у GTK, примерно. о чем спор?

Тот чудак утверждает, что нативность Qt гораздо лучше, а GTK даже глобальное меню не умеет и его разработчики кий на венду с макосью ложили. Лжёт и провоцирует?

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

А как же Тк и wxwidgets, они же вроде ни к чему не привязаны и везде по-нативномы выглядят, нет?

Tk совсем не выглядит по-нативному. или я какой-то не тот Tk смотрел. а wxWidgets монстроидальный, опять же C++, закос под ненавистный MFC к тому же. если бы от всего этого не было противно, то я бы наверное его советовал. но увы. тем более что мне надо еще и мобильные платформы поддерживать, а wx там нету в любом случае. так что все равно надо гуй на нескольких тулкитах делать.

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

Тот чудак утверждает, что нативность Qt гораздо лучше

в Qt нет нативности. есть закос под нативность. и работает немножко лучше, чем в GTK. но и дается не бесплатно, т.е. чтобы выглядело «нативно» везде — все равно придется потрудиться.

если ты не заметил - пока не было в треде ни одного скриншота, который бы 100% нативно выглядел. ни для Qt, ни для GTK.

а GTK даже глобальное меню не умеет

умеет.

и его разработчики кий на венду с макосью ложили.

под OSX точно не ложили. лично для меня исправляли несколько багов в GTK3 для OSX, и помогали решать возникающие проблемы, прямо вот интерактивно в IRC.

под вендой меня в свое время уровень поддержки GTK2 устраивал. сейчас не знаю как.

Лжёт и провоцирует?

скорее всего.

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

Трололо тут в ОП-посте, вообще-то, ибо гном vs кеды и их тулкиты уже давно обсуждены всеми, кому не лень.

А учитывая, что ОП-у всё равно - пусть хоть монетку бросает. (:

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

т.е. нативность того же уровня, что и у GTK, примерно. о чем спор?

Щитаю, что у GTK+ немножко хуже. Всё-таки в Qt сделали более-менее нормальные контроллы. Тыкал как стандартные Cocoa/Carbon так и Qt, GTK+ приложения под OS X/Mac OS. Хотя до производительности и look-and-feel нативных приложений обоим сабжевым тулкитам далеко.

GTK имеет смысл только на линухе, и то в данный момент это чревато, я бы не рискнул. Qt мне просто не нравится вообще ничем. особенно не нравится из-за C++. не понимаю его смысла. на OSX я предпочитаю Cocoa, а на венде Win32 API.

А вообще солидарен. На OS X я бы предпочёл Cocoa, а вот на винде и GNU/Linux - Qt. Потому что в винде look-and-feel Qt'а близок к идеальному и разбираться с говнистым Win32API/MFC не нужно, а в GNU/Linux как такового HIG'а и нету. А GTK+ почему-то боюсь. А ведь раньше сидел на Gnome 2 и горя не знал, пока третий не попробовал.

И да, ещё камень в огород Qt - в пятой версии они чего-то нагородили, что теперь имеется множество багов, которые не могут пофиксить годами и которых нету в Qt 4:

  • [GNU/Linux] Баг с раскладкой: в Qt5-приложениях не работают сочетания клавиш (Ctrl+C, к примеру), если раскладка в системе отличная от «En»;
  • [GNU/Linux] Баг со шрифтами - шрифты стали более серые и Qt5-приложения игнорируют настройки fontconfig (частично);
  • [GNU/Linux] Нету QtConfig и Qt5-приложения выглядят инородно в KDE-системе;
  • [Windows] Сломан рендеринг шрифтов в нескольких виджетах, мыльцо вместо ClearType;
  • [Windows] Интерфейс стал менее отзывчивый, по-сравнению с Qt4. Это отчетливо видно при вызове какого-либо меню в менюбаре - в Qt5 секундная (!) задержка.

При этом большинство этих багов так и висит в трекере, но всем как всегда.
И да, внезапно, VLC-плеер, которым так любят размахивать Qt-филы под OS X не использует Qt, видимо по той простой причине, что выглядит он там не очень. Пруф: https://github.com/videolan/vlc/tree/master/modules/gui/macosx

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

Потому что в винде look-and-feel Qt'а близок к идеальному и разбираться с говнистым Win32API/MFC не нужно

мне как раз наоборот, пришлось бы разбираться с Qt. а winapi у меня был основной тулкит много лет, пока на линух не пересел, и я его очень хорошо знаю.

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

мне как раз наоборот, пришлось бы разбираться с Qt.

Да ну, брось. Для Qt только в ООП (там он эталонный) надо уметь, а кодить на нём проще некуда. Чтобы освоить не нужно даже STL знать, достаточно прочитать пару глав их официальной книжки 2008-го года, потыкать пару примеров: там, в книге, рассматривается процесс создания приложения, имитирующего табличный процессор; и всё - начинай. Если что - в доку, она у Qt просто офигенная, наверное одна из самых лучших созданных документаций вообще. Так что программировать на нём очень удобно.

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

Кстати, можешь литературу какую-нибудь посоветовать по его изучению? Несмотря на то, что оно может и не актуально, интерес к нему всё-таки имеется.

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

крысы покидают корабль, но ты попробуй, может тебе понравится.

Понравится покидать корабль? :)

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

скрин 2003 года

Это ты так пошутил, да? :)

второй скрин

А тут не вижу ненативности. Да, маком пользовался.

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

Это ты так пошутил, да? :)

это писал не я.

А тут не вижу ненативности. Да, маком пользовался.

купи новые очки.

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

Ты об чем?

о штабильности линуксовых тулкитов. которой в данный момент не наблюдается. раньше только GTK обеспечивал 10 лет поддержки. этот срок у двойки истек, но переходить на тройку (для очередных 10 лет) никак нельзя, ибо неюзабельно. у кутей вообще срок поддержки «до следующей поломки API в минорном релизе». вот примерно об этом.

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

Да ну, брось. Для Qt только в ООП (там он эталонный) надо уметь, а кодить на нём проще некуда.

в этом и проблема - я C++ на дух не переношу.

Кстати, можешь литературу какую-нибудь посоветовать по его изучению? Несмотря на то, что оно может и не актуально, интерес к нему всё-таки имеется.

не могу. я начинал знакомство с книжки купленной в книжном магазине не помню какого автора в ~1995 году. а потом по MSDN.

(т.е. да, могу посоветовать - любую книжку для знакомства, но лучше без C++/MFC, там чистой сишечки более чем достаточно, и понимание как все работает будет более глубоким, а после этого MSDN library)

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

минусы бедона перевешивают плюсы плюсов.

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

в этом и проблема - я C++ на дух не переношу.

Там оно больше на Java смахивает, чем на обычные C++-проджекты. Разве что Qt-проекты менее многословны. Зацени сам: https://github.com/Emdek/otter/blob/master/src/ui/MainWindow.cpp от крестов одно название.

у кутей вообще срок поддержки «до следующей поломки API в минорном релизе». вот примерно об этом.

Мажорном. Хотя миграция Qt 4 -> Qt 5 тривиальна, не такие костыли как в случае с Qt 3 -> Qt 4. Недавно переносил на Qt 4/Qt 5 программку с Qtopia/QPE (Qt 2), ничего, за денёк-другой управился. Больше всего мороки было с переписыванием интерфейса под десктоп.

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

от крестов одно название.

все равно кресты остаются крестами.

Мажорном.

5.1 это мажорный? на лоре же писали, что в нем API сломали (линк искать не хочу, спать уже иду)

проблема именно в том, что я не хочу никакую миграцию. я хочу чтобы была обратная совместимость. в qt она недостаточно долгая.

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

Для пакета я бы выбрал Qt (возможно, Qt Quick). Для отдельной мелкой программы - gjs (под GTK).

border-radius
()

Html5 /thread

anonymous
()
Ответ на: комментарий от monk

горизонтальная прокрутка

ну сделай столбцы поуже, она и исчезнет

Ну и сравни с Deluge
в Deluge всё аккуратно

ну и deluge срать хотел на системный вид и смотрится не нативно, в отличии от

Deleted
()

Кстати, именно для GUI советую заюзать QML.

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

а на венде Win32 API.

srsly? Это же хардкор чуть ли не высшей степени. Все эти MessageLoop, SomeCriticalFunction{W,A}, WaitForSingleObject они же просто порождение больной фантазии, на винду есть куда более приятные тулкиты (пусть даже и обёртки).

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

Сколько угодно. Везде, где заработает Gtk + C, заработает и Gtk + Vala, потому что у Vala своего рантайма нет. Из последнего - Venom, клиент Tox'а.

eternal_sorrow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.